html、js简单实现含中文csv文件下载(后端为django)
1.在django views.py中使用HttpResponse
views.py首行加上utf-8编码,将默认unicode编码变为utf-8
# -*- coding:utf-8 -*-
下面是利用HttpResponse生成csv文件
response = HttpResponse(content_type='text/csv;charset=UTF-8')
response.write(codecs.BOM_UTF8) #加入BOM头才能在csv文件中添加中文,否则在excel中是乱码,此句必须加在下句的前面,不然没作用
response['Content-Disposition'] = 'attachment; filename="systemInteriorLog.csv"' writer = csv.writer(response)
writer.writerow(['时间', '日志ID', '动作', '状态', '类型', '内容'])
从数据库中提取的数据中的中文可以用encode()方法编码,如下:
writer.writerow([ log.type.encode('utf-8'), log.description.encode('utf-8')])
这里再说一下decode和encode方法的作用:
decode()将其他编码转换为unicode编码,如decode('gb2313')是将gb2312编码的字符串转为unicode编码;
encode()将unicode编码转换为其他编码,如encode('gb2312')是将unicode编码的字符串转为gb2312编码。
2.在url.py中配置views中方法的url路径
url(r'^download/csv', views.download_csv, name='dowmload_csv') #分别为路径名、方法名
3.方法一 在html中直接链接到该url实现下载
<button type="button"
onclick="location.href='download/csv'">
下载
</button>
4.方法二 在js中实现下载
window.location.href='download/csv';
var url = "www.xxx.com/index.php";
window.location.href = url + "?a=1&b=2";
//使用location.herf还可以实现向views中的request传值
window.location.href='/download/interior/csv'+ '?a='+$scope.a+'&b='+$scope.b;
在views方法中可以用GET得到传来的值
@http_method_required('GET')
def get_interior_csv(request):
get_a = request.GET.get('a')
get_b = request.GET.get('b')
之后再在html文件中调用所写的js方法即可实现文件下载
html、js简单实现含中文csv文件下载(后端为django)的更多相关文章
- Mysql load data infile 命令导入含中文csv源数据文件 【错误代码 1300】
[1]Load data infile 命令导入含中文csv源数据文件 报错:Invalid utf8 character string: '??֧' (1)问题现象 csv格式文件源数据: 导入SQ ...
- 130ftp-python3 FTP简单实现文件下载(含中文乱码问题)
130ftp-python3 FTP简单实现文件下载(含中文乱码问题) python3 FTP简单实现文件下载(含中文乱码问题) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- EChart.js 简单入门
EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart 这个是Visual Studio里的自带控件,使用比 ...
- js简单验证码的生成和验证
如何用js生成简单验证码,并验证是否正确的方法 1.html页面如下 <div> <table border="0" cellspacing="5&qu ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 错误处理
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923887518 处理错误请求 爱能遮掩一切过错. 当我们在访问一个站点的时候,如果访问的地址不存在(404), ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 记录日志
沪江CCtalk视频地址:https://www.cctalk.com/v/15114923883523 log 日志中间件 最困难的事情就是认识自己. 在一个真实的项目中,开发只是整个投入的一小部分 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks
视频地址:https://www.cctalk.com/v/15114923888328 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人. 客户端和服务端之间相互通信,传递的数据 ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层
视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器.路由中间件.Get 和 Post 形式的请 ...
随机推荐
- C++数组概述
C++数组概述 基本概念 1. 数组是固定大小的一种复合类型 因为数组是固定大小,所以在编译期间就决定了基大小 数组的内存是连续(无论是一维数组还是多维数组) 2. 数组的特性 数组之间不允许拷贝和赋 ...
- 2017-06-22初识python
初识python #!/usr/bin/env python (python解释器的文件路径)# -*- coding:utf-8 -*- (使用的编码内型)# python 2.7 <需要加第 ...
- Flash TextField selectable bug block TextEvent.Link solution
There is an old version Felx SDK bug(in my case it's Flex SDK v3.3.0.4852) that when TextField.selec ...
- htm5拖放和画布
拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 首先,为了使元素可拖动,把 draggable 属性设置为 true ondr ...
- js-ES6学习笔记-Set结构和Map结构
http://www.cnblogs.com/lonhon/ 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set ...
- Spring MVC 项目搭建 -2- 添加service ,dao,junit
Spring MVC 项目搭建 -2- 添加service ,dao,junit 1.dao public class Hero { private String name; public Strin ...
- 【请求之密】payload和formData有什么不同?
最近做项目的时候,在通过post请求向服务端发送数据的时候,请求失败了.错误信息如下: 返回的400(bad request)错误,说明客户端这边发送的请求是有问题的. 和通过jquery中的ajax ...
- 第一个spark+scala程序
import org.apache.spark._import SparkContext._import java.util.{Calendar,Properties,Date,Locale}impo ...
- Vulkan Tutorial 25 Images
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 到目前为止,几何图形使用每个顶点颜色进行着色处理,这是一个 ...
- 解决java.lang.NumberFormatException: For input string: "id"
今天,项目突然报"java.lang.NumberFormatException:For input string:"id"",项目框架是spring,spri ...