在实际的项目中很多时候需要用到下载功能,如导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的文件下载相关推荐

  1. Python Django 搭建文件下载服务器

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python Django 搭建文件下载服务器 环境 win10 Python:3.6.7 Django:2.2.7 运行效果 1.创建 Djang ...

  2. Python/Django 大文件下载问题

    最近使用Python/Django开发一个系统,暂且称之为A系统,卡在大文件下载上面,查询了django官方doc和stackoverflow上的很多资料,最终圆满解决此问题,如下为具体过程: 一 A ...

  3. django 压缩文件下载

    简介 需求: 需要在请求时,将数据生成zip文件提供给用户下载. 不想要在生成后再提供给用户下载 解决: 使用BytesIO在内存中写入数据,而不是落地到本地中. 栗子 from io import ...

  4. python实现文件下载-Python+django实现文件下载

    (1)方法一.直接用a标签的href+数据库中文件地址,即可下载.缺点:word excel是直接弹框下载,对于image txt 等文件的下载方式是直接在新页面打开. (2)方法二.在python后 ...

  5. 基于Django的文件上传下载删除管理器

    这是一个基于Django的文件下载,上传,删除的任务管理器 先看看效果展示 1.运行完Django后,直接输入网址http://127.0.0.1:8000 就可以直接进去该网站 2.这是一个主图 上 ...

  6. 第五课 Python Web企业门户网站-常用的扩展功能

    目录 5.1 基本框架 5.2 信号触发器的使用 5.2.1 招聘信息发布 5.2.2 基于模型表单的应聘信息上传 5.2.3 信号触发器的使用 5.3 发送邮件 5.4 资料下载 5.4.1 创建资 ...

  7. 详解django三种文件下载方式

    推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如 ...

  8. python django下载_简单了解django文件下载方式

    这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以 ...

  9. 【Django下载文件-Kml文件下载】

    Django下载文件系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 开发应该了解的Web文件下载 第二章 Django下载文件-三种方法 第三章 Django下载文件- ...

最新文章

  1. 2018-3-15模式识别--学习笔记(一)
  2. xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?
  3. 电脑测速软件_联通你我【宽带提速】让网速飞!超实用的宽带测速提速攻略来啦!...
  4. mac mysql的初始密码_MAC版修改MySQL初始密码的方法
  5. pix2pix损失函数理解(精)
  6. 爬虫教程 python3_Python3网络爬虫(四): 登录
  7. uniapp ios时间戳获取不到_uni-app打包编译成安卓及ios包并上传发布测试版
  8. HDU5695 Gym Class【拓扑排序】
  9. MyEclipse7.0及JDK1.6.0的安装及配置过程(修改)
  10. Pointer 指针
  11. Javascript之旅——第十站:为什么都说闭包难理解呢?
  12. 【2019-08-18】时间是有密度的
  13. 怎样在计算机上注册dll文件,注册dll文件【搞定步骤】
  14. 学术论文海报模板_论文深耕 | 第一次写学术论文无从下手?阅读写作套路来了!...
  15. opencv获取不规则图像
  16. SEO外推福利:外链高收录平台与外链类型分析
  17. 响铃:718 Apple产品京东超级品牌日,如何反映互联网营销大趋势?
  18. lombok var和java var 如何抉择使用?
  19. slqilabs靶场记录堆叠注入(八)
  20. 不仅仅是技术——亚马逊云科re:Invent2022

热门文章

  1. SpringBoot 2.0静态资源映射
  2. 后台管理页面布局(左侧导航长度根据右侧内容无限延伸)
  3. linux查看端口号是否被占用
  4. zabbix_fetion_alter
  5. std::string的split函数
  6. Arcengine 10 ecp
  7. 关于Zipalign的介绍和使用方法
  8. android 屏幕切换监听
  9. Android 高级Drawable资源---复合Drawable----变换Drawable
  10. PHP 从数组对象中取出数组提示:Undefined property: stdClass::$subject