from django.http import HttpResponse, StreamingHttpResponse
from django.template import loader
# 定义一个类Echo,实现write方法
class Echo:
def write(self, value):
return value
def large_csv(request):
# 得到一个StreamingHttpResponse对象,并且设置文件的类型为csv
response = StreamingHttpResponse(content_type='text/csv')
# 不显示文件的内容,只是可以进行下载,并且设置文件的名字
response['Content-Disposition'] = "attachment; filename=large_csv.csv"
# 因为StreamingHttpResponse对象传递的第一个参数必须是可以迭代的对象
# ()中使用for ... in ...进行遍历,我们就可以得到一个生成器一样的对象,生成器并不会把数据一次性的返回
rows = ("row {},{}\n".format(row,row) for row in range(0,10000000))
# 使用format()函数将后面的(row,row)与字符串中的{}进行替换
response.streaming_content = rows
return response
from django.http import HttpResponse
import csv
def large_view(request):
# 初始化
response = HttpResponse(content_type='text/csv')
# 指定文件不显示文件内容,可以作为附件进行下载,并且指定文件名
response['Content-Disposition'] = "attachment; filename=large_csc.csv"
<!--使用python内置的csv模块中的write()方法向response对象写入数据-->
writer = csv.writer(response)
for row in range(0,10000000):
writer.writerow(['row {}'.format(row),'row'.format(row)])
return response
原文:https://www.cnblogs.com/guyan-2020/p/12293299.html