Django的文件下载
在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载。
我们这里介绍三种Django下载文件的简单写法,然后使用第三种方式,完成一个高级一些的文件下载的方法
index.html内容如下
<div><a href="{% url 'download' %}">文件下载</a> </div>
urls.py文件内容如下:
urlpatterns = [url(r'^index/', views.index,name='index'),url(r'^download/', views.download,name='download'),]
view视图函数的写法有一下三种:
方式1:
from django.shortcuts import HttpResponse def download(request):file = open('crm/models.py', 'rb') #打开指定的文件response = HttpResponse(file) #将文件句柄给HttpResponse对象response['Content-Type'] = 'application/octet-stream' #设置头信息,告诉浏览器这是个文件response['Content-Disposition'] = 'attachment;filename="models.py"' #这是文件的简单描述,注意写法就是这个固定的写法return response
注意:HttpResponse会直接使用迭代器对象,将迭代器对象的内容存储城字符串,然后返回给客户端,同时释放内存。可以当文件变大看出这是一个非常耗费时间和内存的过程。而StreamingHttpResponse是将文件内容进行流式传输,数据量大可以用这个方法
方式2:
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
方式3:
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
三种http响应对象在django官网都有介绍.入口:https://docs.djangoproject.com/en/1.11/ref/request-response/
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。
转载于:https://www.cnblogs.com/lulin9501/p/11081476.html
Django的文件下载相关推荐
- Python Django 搭建文件下载服务器
本文仅供学习交流使用,如侵立删!demo下载见文末 Python Django 搭建文件下载服务器 环境 win10 Python:3.6.7 Django:2.2.7 运行效果 1.创建 Djang ...
- Python/Django 大文件下载问题
最近使用Python/Django开发一个系统,暂且称之为A系统,卡在大文件下载上面,查询了django官方doc和stackoverflow上的很多资料,最终圆满解决此问题,如下为具体过程: 一 A ...
- django 压缩文件下载
简介 需求: 需要在请求时,将数据生成zip文件提供给用户下载. 不想要在生成后再提供给用户下载 解决: 使用BytesIO在内存中写入数据,而不是落地到本地中. 栗子 from io import ...
- python实现文件下载-Python+django实现文件下载
(1)方法一.直接用a标签的href+数据库中文件地址,即可下载.缺点:word excel是直接弹框下载,对于image txt 等文件的下载方式是直接在新页面打开. (2)方法二.在python后 ...
- 基于Django的文件上传下载删除管理器
这是一个基于Django的文件下载,上传,删除的任务管理器 先看看效果展示 1.运行完Django后,直接输入网址http://127.0.0.1:8000 就可以直接进去该网站 2.这是一个主图 上 ...
- 第五课 Python Web企业门户网站-常用的扩展功能
目录 5.1 基本框架 5.2 信号触发器的使用 5.2.1 招聘信息发布 5.2.2 基于模型表单的应聘信息上传 5.2.3 信号触发器的使用 5.3 发送邮件 5.4 资料下载 5.4.1 创建资 ...
- 详解django三种文件下载方式
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如 ...
- python django下载_简单了解django文件下载方式
这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以 ...
- 【Django下载文件-Kml文件下载】
Django下载文件系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件- ...
最新文章
- 2018-3-15模式识别--学习笔记(一)
- xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?
- 电脑测速软件_联通你我【宽带提速】让网速飞!超实用的宽带测速提速攻略来啦!...
- mac mysql的初始密码_MAC版修改MySQL初始密码的方法
- pix2pix损失函数理解(精)
- 爬虫教程 python3_Python3网络爬虫(四): 登录
- uniapp ios时间戳获取不到_uni-app打包编译成安卓及ios包并上传发布测试版
- HDU5695 Gym Class【拓扑排序】
- MyEclipse7.0及JDK1.6.0的安装及配置过程(修改)
- Pointer 指针
- Javascript之旅——第十站:为什么都说闭包难理解呢?
- 【2019-08-18】时间是有密度的
- 怎样在计算机上注册dll文件,注册dll文件【搞定步骤】
- 学术论文海报模板_论文深耕 | 第一次写学术论文无从下手?阅读写作套路来了!...
- opencv获取不规则图像
- SEO外推福利:外链高收录平台与外链类型分析
- 响铃:718 Apple产品京东超级品牌日,如何反映互联网营销大趋势?
- lombok var和java var 如何抉择使用?
- slqilabs靶场记录堆叠注入(八)
- 不仅仅是技术——亚马逊云科re:Invent2022
热门文章
- SpringBoot 2.0静态资源映射
- 后台管理页面布局(左侧导航长度根据右侧内容无限延伸)
- linux查看端口号是否被占用
- zabbix_fetion_alter
- std::string的split函数
- Arcengine 10 ecp
- 关于Zipalign的介绍和使用方法
- android 屏幕切换监听
- Android 高级Drawable资源---复合Drawable----变换Drawable
- PHP 从数组对象中取出数组提示:Undefined property: stdClass::$subject