推荐使用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 HttpResponsedef 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 StreamingHttpResponsedef 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

转载于:https://www.cnblogs.com/nyist-xsk/p/10155509.html

详解django三种文件下载方式相关推荐

  1. LVS原理详解(3种工作方式8种调度算法)--老男孩

    一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...

  2. 详解ISA2006三种客户端

    详 解ISA2006三种客户端<?XML:NAMESPACE PREFIX = O /> 上一篇我们介绍了如何部署ISA2006,本文我们要让部署好的ISA来干活了.ISA能干什么活?从字 ...

  3. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  4. Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)

    PHP能不能成功的在Apache服务器上运行,就看我们如何去配置PHP的运行方式.PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...

  5. LVS原理详解(3种工作方式8种调度算法)

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  6. 详解 Calico 三种模式(与 Fannel 网络对比学习)

    参考 Component architecture calico架构与网络模型深入分析 35 | 解读Kubernetes三层网络方案 calico学习 Kubernetes网络插件Flannel的3 ...

  7. 【Kubernetes 系列】详解 ConfigMap 九种创建方式

    作者:半身风雪 上一节:配置 Java 微服务 内容简介:上一节主要学习使用 Kubernetes ConfigMaps 和 Secrets 设置环境变量,本节我们将学习,创建ConfigMap 的1 ...

  8. C语言的注释形式及作用,C语言注释详解(两种注释方式)

    在编写C语言源代码时,应该多使用注释,这样有助于对代码的理解.在C语言中有两种注释方式: 一种是以/*开始.以*/结束的块注释(block comment): 另一种是以//开始.以换行符结束的单行注 ...

  9. Java控制器controller_详解springMVC—三种控制器controller

    在springmvc中提供了三种controller的配置,1.针对不需要controller代码的,也就是只起到跳转页面的作用.2.可以接受实体类型的controller.3.可以接受表单数据的co ...

最新文章

  1. 不同版本gene ID比较
  2. python安装教程32位-python为什么要装32位的
  3. SQL Azure(十) SQL Azure Data Sync数据同步功能(上)
  4. 【Python 自然语言处理 第二版】读书笔记2:获得文本语料和词汇资源
  5. 【坐在马桶上看算法】算法10:二叉树
  6. 数论三之组合数学Ⅰ-Max-Min Sums,Binomial Coefficient is Fun,Strivore,Bubble Sort,放棋子,LOJ6671,Iroha and a Grid
  7. 学习分布式不得不会的ACP理论
  8. 面向对象程序设计的术语
  9. C++:02---命名空间
  10. dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数
  11. API接口应该如何设计?
  12. 温故而知新,8个有用的JS技巧「小知识点」
  13. 用 iBiu 3 秒构建出大型 Vue 项目架子
  14. 9.28 csp-s模拟测试54 x+y+z
  15. rest-framework之版本控制
  16. CCFTF17(上海):认知计算产业化如何落地(知识图谱、智能问答等)
  17. 性能,不是不重要,而是,它没有可维护性重要
  18. 【遥感影像处理与分析】遥感影像校正详解-辐射校正、几何校正流程与方法比较
  19. Excel-查找与引用函数
  20. openstack搭建问题

热门文章

  1. css深入理解之overflow
  2. Java Web(5) Spring 下使用Junit4 单元测试
  3. WordPress在nginx下的URL重写规则
  4. 怎么一步步编写简单的PHP的Framework(五)
  5. 实验一 小凡和VMware虚拟机的使用练习
  6. questions for the exploitation of technologies
  7. selection at the technology management
  8. 有一个能够统一的方式来画uml图的软件
  9. HBase 3.0 可能的新特性
  10. pom.xml文件指定jdk版本号/跳过测试