简单了解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中比较运算符的使用
May 13 Python
Python语言描述连续子数组的最大和
Jan 04 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python+rsync精确同步指定格式文件
Aug 29 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
解决Django Haystack全文检索为空的问题
May 19 Python
自学python用什么系统好
Jun 23 Python
Python字典取键、值对的方法步骤
Sep 30 Python
Python截图并保存的具体实例
Jan 14 Python
python代码实现扫码关注公众号登录的实战
Nov 01 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
python单例模式实例解析
2018/08/28 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
10款最好的Python开发编辑器
2019/07/03 Python
Python解析多帧dicom数据详解
2020/01/13 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
安全检查验收制度
2014/01/12 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
董事长助理工作职责
2014/06/08 职场文书
铅球加油稿100字
2014/09/26 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL