简单了解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多线程编程(四):使用Lock互斥锁
Apr 05 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
基于python指定包的安装路径方法
Oct 27 Python
Python单元和文档测试实例详解
Apr 11 Python
Python Django Cookie 简单用法解析
Aug 13 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
整理Python中常用的conda命令操作
Jun 15 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 zend解密软件绿色版测试可用
2008/04/14 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
基于empty函数的输出详解
2013/06/17 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
Javascript实现字数统计
2015/07/03 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
Python第三方库的安装方法总结
2016/06/06 Python
python与字符编码问题
2019/05/24 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
会计电算化专业毕业生推荐信
2013/12/24 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
学校岗位设置方案
2014/01/16 职场文书
京剧自荐信
2014/01/26 职场文书
开学典礼决心书
2014/03/11 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
工作收入证明模板
2015/06/12 职场文书
电力安全学习心得体会
2016/01/18 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers