简单了解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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
谈谈Python中的while循环语句
Mar 10 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
python使用numpy中的size()函数实例用法详解
Jan 29 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php下通过POST还是GET来传值
2008/06/05 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
解决DataFrame排序sort的问题
2018/06/07 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
python输出数学符号实例
2020/05/11 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
2014年技术工作总结范文
2014/11/20 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android