htmljs简单实现含中文csv文件下载(后端为django)

Posted Infinite666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了htmljs简单实现含中文csv文件下载(后端为django)相关的知识,希望对你有一定的参考价值。

1.在django  views.py中使用HttpResponse:

  views.py首行加上utf-8编码,将默认unicode编码变为utf-8

1 # -*- coding:utf-8 -*-

  下面是利用HttpResponse生成csv文件

1 response = HttpResponse(content_type=text/csv;charset=UTF-8)
2 response.write(codecs.BOM_UTF8)  #加入BOM头才能在csv文件中添加中文,否则在excel中是乱码,此句必须加在下句的前面,不然没作用
3 response[Content-Disposition] = attachment; filename="systemInteriorLog.csv"
4 
5 writer = csv.writer(response)
6 writer.writerow([时间, 日志ID, 动作, 状态, 类型, 内容])

  从数据库中提取的数据中的中文可以用encode()方法编码,如下:

1 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路径

1 url(r^download/csv, views.download_csv, name=‘dowmload_csv‘)    #分别为路径名、方法名

 

3.方法一  在html中直接链接到该url实现下载

1 <button type="button" 
2 onclick="location.href=‘download/csv‘">
3     下载
4 </button>

 

4.方法二  在js中实现下载

1 window.location.href=‘download/csv‘;

  

1 var url = "www.xxx.com/index.php";
2 window.location.href = url + "?a=1&b=2";    
3 //使用location.herf还可以实现向views中的request传值
4 window.location.href=‘/download/interior/csv‘+ ‘?a=‘+$scope.a+‘&b=‘+$scope.b;

 

  在views方法中可以用GET得到传来的值

1 @http_method_required(GET)
2 def get_interior_csv(request):
3     get_a = request.GET.get(a)
4     get_b = request.GET.get(b)

  之后再在html文件中调用所写的js方法即可实现文件下载




以上是关于htmljs简单实现含中文csv文件下载(后端为django)的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax异步下载文件,后端为struts2

前端为access,后端为sql server

htmljs实现简单的注册功能校验

Rundeck 项目和作业在 2 个实例之间同步,后端为 mysql 集群

markdown 后端为前端导出变量

c实现 简单的文件管理 不含交互