简单了解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 15 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
详解Django通用视图中的函数包装
Jul 21 Python
python文件与目录操作实例详解
Feb 22 Python
Python lambda函数基本用法实例分析
Mar 16 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
python spyder中读取txt为图片的方法
Apr 27 Python
Python数据类型之String字符串实例详解
May 08 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
python urllib库的使用详解
Apr 13 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 Python
LeetCode189轮转数组python示例
Aug 05 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预定义常量
2006/12/25 PHP
一个简单的PHP&amp;MYSQL留言板源码
2020/07/19 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
PHP 文件上传全攻略
2010/04/28 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
微信小程序网络请求封装示例
2018/07/24 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
深入浅析python with语句简介
2018/04/11 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Django实现分页显示效果
2019/10/31 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
客服专员岗位职责
2014/02/28 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2014年化验员工作总结
2014/11/18 职场文书
催款通知书范文
2015/04/17 职场文书
心灵捕手观后感
2015/06/02 职场文书