简单了解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编写的最短路径算法
Mar 25 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
Python 创建空的list,以及append用法讲解
May 04 Python
opencv python 图像去噪的实现方法
Aug 31 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python重试装饰器的简单实现方法
Jan 31 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
python中return不返回值的问题解析
Jul 22 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
Python深度学习之Pytorch初步使用
May 20 Python
Python使用Web框架Flask开发项目
Jun 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
cakephp常见知识点汇总
2017/02/24 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
javascript Base类 包含基本的方法
2009/07/22 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
js a标签点击事件
2017/03/30 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
对python中的高效迭代器函数详解
2018/10/18 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
财务经理岗位职责
2013/11/09 职场文书
学习委员自我鉴定
2014/01/13 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
个性发展自我评价
2014/02/11 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
解析Java异步之call future
2021/06/14 Java/Android
Go web入门Go pongo2模板引擎
2022/05/20 Golang
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers