简单了解django文件下载方式


Posted in Python onFebruary 10, 2020

这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。

在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,

如nginx,这里我们主要介绍django中的文件下载。

实现方式:a标签+响应头信息(当然你可以选择form实现)

<div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载</a></div>

方式一:使用HttpResponse
路由url:
    url(r'^download/',views.download,name="download"),
views.py代码
    from django.shortcuts import HttpResponse
    def download(request):
       file = open('crm/models.py', 'rb')
       response = HttpResponse(file)
       response['Content-Type'] = 'application/octet-stream' #设置头信息,告诉浏览器这是个文件
       response['Content-Disposition'] = 'attachment;filename="models.py"'
       return response
方式二:使用StreamingHttpResponse, 其他逻辑不变,主要变化在后端处理:
      from django.http import StreamingHttpResponse
      def download(request):
         file=open('crm/models.py','rb')
         response =StreamingHttpResponse(file)
         response['Content-Type']='application/octet-stream'
         response['Content-Disposition']='attachment;filename="models.py"'
         return response
方式三:使用FileResponse
from django.http import FileResponse
def download(request):
 file=open('crm/models.py','rb')
 response =FileResponse(file)
 response['Content-Type']='application/octet-stream'
 response['Content-Disposition']='attachment;filename="models.py"'
 return response

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

Python 相关文章推荐
python 输出一个两行字符的变量
Feb 05 Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
python字典排序实例详解
May 20 Python
深入理解Python装饰器
Jul 27 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Python列表推导式与生成器用法分析
Aug 02 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
python字典一键多值实例代码分享
Jun 14 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
Python使用openpyxl批量处理数据
Jun 23 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 #Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 #Python
解决tensorflow添加ptb库的问题
Feb 10 #Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 #Python
python如何实现单链表的反转
Feb 10 #Python
基于python求两个列表的并集.交集.差集
Feb 10 #Python
python实现串口通信的示例代码
Feb 10 #Python
You might like
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
jquery获取radio值实例
2014/10/16 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python中处理unchecked未捕获异常实例
2015/01/17 Python
python3.x上post发送json数据
2018/03/04 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
如何用Django处理gzip数据流
2021/01/29 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
英国医生在线预约:Top Doctors
2019/10/30 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
工程概预算专业毕业生求职信
2013/10/04 职场文书
药品业务员岗位职责
2014/04/17 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫