27. 生成CSV文件
CSV(Comma-Separated Values)文件中文件字符分隔值,CSV文件以纯文本形式存储表格数据(数字和文本),可以被常见制表工具(excel等)直接读取
目录
1 生成CSV
2 结合django使用csv
2.1 方案1
2.2 方案2
3 分页配合csv文件
1 生成CSV
我们使用python内建的csv库来操作csv文件
- open生成CSV文件必须有newline且newline必须是空字符串
- writerow()调用一次就会写一行
运行后在代码的同级目录中会出现生成的csv文件
打开后发现与我们输入的内容一致
writerow()的参数只要是一个列表就行,所以我们可以使用查询数据的结果生成csv文件,我下面会用数据表做例子
2 结合django使用csv
目的都是搞一个路由,然后访问这个路由就可以得到生成的csv文件
2.1 方案1
生成放static中,然后302到static就能下载了
路由
视图
之后我们访问download_csv1
- 由于302到static,所以地址栏不会显示download_csv1
打开下载好的test.csv,发现其中是我们需要的内容
2.2 方案2
方案二对响应做出一些修改
- 修改content_type,告知浏览器该文档是CSV文件,而不是HTML文件
- 修改Content-Disposition,告知浏览器有附件,响应后需要保存
csv.writer()的参数为csv文档对象,此时response就是一个csv文档对象,所以可以放在csv.writer()中
之后我们搞一个路由
然后访问一下
效果与方案一相同
点开后发现是我们想要的数据
方案二相较于方案一不需要使用static,也不需要特意搞路由
3 分页配合csv文件
有时会有下载当前页内容的需求,我们使用之前的分页来搞一下
搞一个下载每页CSV的视图
再搞一个路由
最后在分页的html中加入一个a标签
- 链接地址一定要给查询字符串
之后我们访问一下分页的路由,然后点击下载该页信息
打开后发现符合要求