简单了解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中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
Python实现二维数组输出为图片
Apr 03 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
python循环输出三角形图案的例子
Nov 22 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
python环境下安装opencv库的方法
Mar 05 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
Python程序慢的重要原因
Sep 04 Python
python 实现客户端与服务端的通信
Dec 23 Python
Python实现单例模式的5种方法
Jun 15 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python递归函数定义与用法示例
2017/06/02 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
pycharm配置git(图文教程)
2019/08/16 Python
如何解决安装python3.6.1失败
2020/07/01 Python
python中np是做什么的
2020/07/21 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
学生会主席竞聘书
2014/03/31 职场文书
师德师风个人反思
2014/04/28 职场文书
竞选学委演讲稿
2014/09/13 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书