简单了解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实现的二叉树算法和kmp算法实例
Apr 25 Python
pygame学习笔记(5):游戏精灵
Apr 15 Python
python 队列详解及实例代码
Oct 18 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
django中send_mail功能实现详解
Feb 06 Python
Django实现分页功能
Jul 02 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
python ddt数据驱动最简实例代码
Feb 22 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
简单的Python调度器Schedule详解
2019/08/30 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
趣味比赛活动方案
2014/02/15 职场文书
仓库文员岗位职责
2014/04/06 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
一篇文章带你复习java知识点
2021/06/28 Java/Android
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
Python中request的基本使用解决乱码问题
2022/04/12 Python