简单了解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 socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
Python安装selenium包详细过程
Jul 23 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
详解Python编程中包的概念与管理
2015/10/16 Python
python脚本监控docker容器
2016/04/27 Python
Python ldap实现登录实例代码
2016/09/30 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python中format()格式输出全解
2019/04/12 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
简单分析python的类变量、实例变量
2019/08/23 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
植树节标语
2014/06/27 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
导游词之无锡唐城
2019/12/12 职场文书