django 文件下载,django 文件,详解django三种文件下载方式

django 文件下载,django 文件,详解django三种文件下载方式

这篇文章主要介绍了详解姜戈三种文件下载方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、概述

在实际的项目中很多时候需要用到下载功能,如导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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: