这篇文章主要介绍了详解姜戈三种文件下载方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一、概述
在实际的项目中很多时候需要用到下载功能,如导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的子类,内部使用迭代器进行数据流传输。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。