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的子类,内部使用迭代器进行数据流传输。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

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