Django的响应类型
一次响应类型:
HttpResponse类及子类
JsonResponse类
流式响应(适用于大文本文件传输,大二进制文件传输):
StreamingHttpResponse类
FileResponse类
实例:文件下载
(1)HttpResponse方式
文件内容一次性响应,仅适合小文件
def file_download(request):
# do something...
with open('data.txt') as f:
c = f.read()
return HttpResponse(c)
(2)StreamingHttpResponse方式
将文件分段,每次传输一部分,分段大小可调
利用python的迭代器产生分段
可以是文件,也可以是任何大规模数据响应
from django.http import StreamingHttpResponse
def big_file_downlod(request):
# do something...
def file_iterator(file_name,chunk_size=512):
with open(file_name) as f;
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
fname = "data.txt"