这篇文章主要介绍了详解姜戈三种文件下载方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一、概述
在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用网服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍姜戈中的文件下载。
实现方式:a标签响应头信息(当然你可以选择形式实现)
div class=' col-MD-4 ' a href=' { % URL ' download ' % } ' rel=' external no follow '点我下载/a/div
方式一:使用HttpResponse
路由网址:
url(r'^download/',views.download,name='download'),
views.py代码
从django .捷径导入HttpResponse
定义下载(请求):
file=open('crm/models.py ',' rb ')
response=HttpResponse(文件)
响应['内容类型']='应用程序/八位字节流' #设置头信息,告诉浏览器这是个文件
响应['内容处置']='附件;filename='models.py ' '
返回响应
方式二:使用StreamingHttpResponse
其他逻辑不变,主要变化在后端处理
从django.http导入StreamingHttpResponse
定义下载(请求):
file=open('crm/models.py ',' rb ')
response=StreamingHttpResponse(文件)
响应['内容类型']='应用程序/八位字节流'
响应['内容处置']='附件;filename='models.py ' '
返回响应
方式三:使用FileResponse
从django.http导入文件响应
定义下载(请求):
file=open('crm/models.py ',' rb ')
response=FileResponse(文件)
响应['内容类型']='应用程序/八位字节流'
响应['内容处置']='附件;filename='models.py ' '
返回响应
使用总结
三种超文本传送协议(超文本传输协议的缩写)响应对象在姜戈官网都有介绍。入口:https://个文档。django项目。com/en/1.11/ref/request-response/
推荐使用文件响应,从源码中可以看出文件响应是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。