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 形式的请 ...
随机推荐
- mysql GROUP_CONCAT获取分组的前几名
比如说要获取班级的前3名,oracle 可以用 over partition by 来做.mysql就可以用GROUP_CONCAT + GROUP BY + substring_index实现. ...
- node.js 发送http 请求
自己研究了一下 node.js 的 http模块 下面为想服务器发送请求的代码 ,通过学习了解http 请求的过程 ,node.js 对http请求的原始封装比较低,以前php 可以用$_GET , ...
- 开源框架GreenDao的操作
1.为什么需要GreenDao?Google原生API不方便 @1手动组拼SQL语句 @2需要自己写操作数据库代码 @3不能把数据库中的数据映射成对象 @4没有实现关联查询 2.GreenDao是什么 ...
- 9.session的生命周期
1.创建 当客户端第一次访问某个jsp或者Servlet的时候,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求的时候,都会将此SessionId携带过去,服务端会对此Sess ...
- JS实现全选、不选、反选
思路:1.获取元素.2.用for循环历遍数组,把checkbox的checked设置为true即实现全选,把checkbox的checked设置为false即实现不选.3.通过if判断,如果check ...
- Android-->创建自定义控件
1.仿 iPhone 的风格,在界面的顶部放置一个标题栏. <?xml version="1.0" encoding="utf-8"?> <R ...
- Python3 常用数据类型语法
1.int类型 int类型的数据是没有长度限制的,它的最大长度只与计算机的内存有关. bin(i) 返回二进制表示结果, hex(i) 十六进制, int(i) 整数( ...
- Day01_变量,数据类型_程序交互_流程控制
python执行的两种方式: 1,交互的方式: 优点:可以及时调试程序,调试方法 缺点: 无法永久保存代码 2,保存在文件中执行 优点:可以永久保存代码,在执行的时候调用 缺点:不能即时调试代 ...
- windows平台python 2.7环境编译安装zbar
最近一个项目需要识别二维码,找来找去找到了zbar和zxing,中间越过无数坑,总算基本上弄明白,分享出来给大家. 一.zbar官方介绍 ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图 ...
- spring的applicationContext.xml配置SessionFactory抛异常
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFa ...