25、Django-生成csv文件
python提供了内建库 - csv、可以直接通过改库操作csv文件
案例如下:
写入csv文件
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
write = csv.writer(csvfile)
write.writerow(['a', 'b', 'c'])
#csv文件下载
在网站中、实现下载csv、注意如下:
- 响应Content-Type 类型需修改为 test/csv 这告诉浏览器该文件是csv文件、而不是HTML文件
- 响应会获得一个额外的Content-Disposition标头、其中包含csv文件的名称、他将被浏览器用于开启 '另存为...'对话框
views.py
-----------------------------------------------------------------------------------------
from django.http import HttpResponse
from django.shortcuts import render
import csv
# Create your views here.
#访问http://127.0.0.1:8000/test_csv
#自动下载test.csv文件
def test_csv(request):
# 创建响应对象 、设置响应类型
response = HttpResponse(content_type='text/csv') # Content-Type、修改响应头
##添加特殊的响应头、只要有这个响应头浏览器就会弹出下载
#attachment: 是告诉浏览器,这个文件要下载下来
#filename: 是告诉浏览器,文件名是什么
response['Content-Disposition'] = 'attachment; filename="test.csv"'
all_data = ['a', 'b', 'c', 'd'] # 所有数据
# 创建csv写入对象
writer = csv.writer(response)
writer.writerow(all_data) # 写入数据
return response
-----------------------------------------------------------------------------------------------------
urls.py
--------------------------------------------------------
from django.contrib import admin
from django.urls import path
from download_csv import views
urlpatterns = [
path('admin/', admin.site.urls),
path('test_csv/', views.test_csv)
]
------------------------------------------------------------