标签:tac context django pre userinfo 并且 告诉 file 默认值
有时候我们做的网站,需要将一些数据,生成有一个CSV
文件给浏览器,并且是作为附件的形式下载下来。以下将讲解如何生成CSV
文件。
这里将用一个生成小的CSV
文件为例,来把生成CSV
文件的技术要点讲到位。我们用Python
内置的csv
模块来处理csv
文件,并且使用HttpResponse
来将csv
文件返回回去。示例代码如下:
from django.http import HttpResponse, JsonResponse import json, csv def small_csv(request): response = HttpResponse(content_type=‘text/csv‘) response[‘Content-Disposition‘] = "attachment;filename=‘userinfo.csv‘" my_write = csv.writer(response) my_write.writerow([‘username‘,‘age‘]) my_write.writerow([‘tom‘,‘21‘]) my_write.writerow([‘jack‘,‘22‘]) return response
这里再来对每个部分的代码进行解释:
csv
文件定义成模板:我们还可以将csv
格式的文件定义成模板,然后使用Django
内置的模板系统,并给这个模板传入一个Context
对象,这样模板系统就会根据传入的Context
对象,生成具体的csv
文件。示例代码如下:
模板文件:
# 文件路径是:工程template目录下: {% for row in rows %}{{ row.0 }},{{ row.1 }} {% endfor %}
视图函数:
def template_csv(request): resp = HttpResponse(content_type=‘text/csv‘) resp[‘Content-Disposition‘] = "attachment;filename=‘templateinfo.csv‘" context = { ‘rows‘: [ [‘username‘, ‘age‘], [‘bob‘,19], [‘marry‘, 20], ] } template =loader.get_template(‘template.txt‘) csv_template = template.render(context) resp.content = csv_template return resp
标签:tac context django pre userinfo 并且 告诉 file 默认值
原文地址:https://www.cnblogs.com/zheng-weimin/p/10415876.html