简单了解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 列表(List)操作方法详解
Mar 11 Python
详解python进行mp3格式判断
Dec 23 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
python里dict变成list实例方法
Jun 26 Python
10款最好的Python开发编辑器
Jul 03 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
python getpass模块用法及实例详解
Oct 07 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
Pytorch实验常用代码段汇总
Nov 19 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
php验证码生成器
2017/05/24 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
JavaScript闭包详解
2015/02/02 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python中 logging的使用详解
2017/10/25 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
python安装及变量名介绍详解
2020/12/12 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
一道SQL存储过程面试题
2016/10/07 面试题
杭州-DOTNET笔试题集
2013/09/25 面试题
2015年招商引资工作总结
2015/04/25 职场文书
房屋质量投诉书
2015/07/02 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
python爬虫--selenium模块
2021/03/31 Python
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers