简单了解django文件下载方式

这篇文章主要介绍了简单了解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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Django实现文件上传下载功能

    项目介绍 最近学习django,通过文件上传下载这个小项目,总结下常用的知识点. 做这个案例我有以下需求: 1.要支持一次上传多个文件 2.支持上传后记录上传的数据以及列表展示 3.支持下载和删除文件记录 效果展示 数据库记录 开发步骤 创建项目: django-admin startproject file_upload cd file_upload python manage.py startapp uploader 目录结构: 0.settings.py LANGUAGE_CODE = '

  • Django 大文件下载实现过程解析

    django提供文件下载时,若果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入Response对象中: def simple_file_download(request): # do something... content = open("simplefile", "rb").read() 如果文件非常大时,最简单的办法就是使用静态文件服务器,比如Apache或者Nginx服务器来处理下载.不过有时候,我们需要对用户的权限做一下限定,或者不想

  • Django文件上传与下载(FileFlid)

    本文实例为大家分享了Django文件上传与下载的具体代码,供大家参考,具体内容如下 Django1.4 首先是上传: #settings.py MEDIA_ROOT = HERE#定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件 MEDIA_URL = 'media'#定义 MEDIA_URL 作为该目录的公共 URL,要确保该目录对 WEB 服务器用户帐号是可写的 #model.py #coding=utf-8 from django.db import mod

  • Django 实现下载文件功能的示例

    基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生成的文件).先检查用户权限再下载文件等.因此,有必要研究一下文件下载功能在Django中的实现. 最简单的文件下载功能的实现 将文件流放入HttpResponse对象即可,如: def file_download(request): # do something... with open('file_na

  • python django下载大的csv文件实现方法分析

    本文实例讲述了python django下载大的csv文件实现方法.分享给大家供大家参考,具体如下: 接手他人项目,第一个要优化的点是导出csv的功能,而且要支持比较多的数据导出,以前用php实现过,直接写入php://output就行了,django怎么做呢?如下: 借助django的StreamingHttpResponse和python的generator def outputCSV(rows, fname="output.csv", headers=None): def get

  • Django学习之文件上传与下载

    本文实例为大家分享了Django文件上传与下载的具体代码,供大家参考,具体内容如下 文件上传 1.新建django项目,创建应用stu: python manage.py startapp stu 2.在配置文件setting.py INSTALLED_APP 中添加新创建的应用stu 3.配置urls,分别在test\urls 和子路由stu\urls 中 #test\urls urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^s

  • 详解django三种文件下载方式

    一.概述 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. 实现方式:a标签+响应头信息(当然你可以选择form实现) <div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载

  • Django实现文件上传下载

    本文实例为大家分享了Django实现文件上传下载的具体代码,供大家参考,具体内容如下 一.django实现文件下载 (1).后台接口 如果从服务器直接将文件路径传给浏览器,普通文件可以直接下载,而图片,html,css和pdf格式等文件会直接显示,所以解决办法就是在头文件中让文件流写入硬盘. ①.最简单的文件下载功能的实现,直接将文件流放入HttpResponse对象即可 def file_download(request): # do something... with open('file_

  • Django实现文件上传和下载功能

    本文实例为大家分享了Django下完成文件上传和下载功能的具体代码,供大家参考,具体内容如下 一.文件上传 Views.py def upload(request): if request.method == "POST": # 请求方法为POST时,进行处理 myFile = request.FILES.get("myfile", None) # 获取上传的文件,如果没有文件,则默认为None if not myFile: return HttpResponse(

  • 简单了解django文件下载方式

    这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器, 如nginx,这里我们主要介绍django中的文件下

  • 简单了解django缓存方式及配置

    前言 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存, 1. 缓存的概述: 缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回. 2. Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(py

  • python实现简单的tcp 文件下载

    什么是下载? 首先客户端会问服务器,有没有一个xxx的文件啊?服务器开始寻找,找到后对客户端说有,然后客户端在本地新建一个文件,客户端从服务器收到一点数据,就写进这个文件中,再收到一点数据,再写入这个文件中,只要把所有的接收到的数据都写入到这个文件中,就完成了下载的操作. 所以下载需要2个部分.服务器的发送方和客户端的接收方. 我们这里不考虑复杂的情况.什么限速啊,验证啊,文件大小......只实现最简单的逻辑. 客户端参考代码 import socket def main(): # 创建soc

  • Ubuntu安装java的最简单的命令行方式(推荐)

    由于经常要安装java,因此 深受其烦! 分为两部: 1. sudo apt-get install openjdk-7-jdk 2. sudo vim /etc/environment 然后把下面的复制过去 : JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-amd64>" 3.source /etc/environment 以上所述是小编给大家介绍的Ubuntu安装java的最简单的命令行方式,希望对大家有所帮助,如果大家有任何疑问请给我

  • 简单了解Django模板的使用

    模板标签include的使用 {%include"police/module/carousel.html"withimgs=imgsdiv_id='#carousel-index'%} 此处carousel.html为需要利用的模板文件,这里主要是用来展示轮播图,其中imgs和div_id为需要传入该模板的变量. 自定义tag的使用 添加目录和文件 在djangoapp目录中添加一个templatetagsPython包(Packages),注意是包,非目录.如下图所示: 这里我在应用

  • 简单了解Django ORM常用字段类型及参数配置

    这篇文章主要介绍了简单了解Django ORM常用字段类型及参数配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.数值型 AutoField对应int(11).自增主键,Django Model默认提供,可以被重写. BooleanField对应tinyint(1).布尔类型字段,一般用于记录状态标记. DecimalField对应decimal.开发对数据精准要求较高大的业务时考虑使用.比如:cash=models.DecimalFie

  • 利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式

    Tensorflow是目前最流行的深度学习框架,我们可以用它来搭建自己的卷积神经网络并训练自己的分类器,本文介绍怎样使用Tensorflow构建自己的CNN,怎样训练用于简单的验证码识别的分类器.本文假设你已经安装好了Tensorflow,了解过CNN的一些知识. 下面将分步介绍怎样获得训练数据,怎样使用tensorflow构建卷积神经网络,怎样训练,以及怎样测试训练出来的分类器 1. 准备训练样本 使用Python的库captcha来生成我们需要的训练样本,代码如下: import sys i

  • python3中celery异步框架简单使用+守护进程方式启动

    安装celery sudo pip install celery 实例化 celery from celery import Celery app = Celery("testapp") # 导入配置 app.config_from_object('celery_tasks.config') # 自动添加任务 app.autodiscover_tasks(["celery_tasks.test","celery_tasks.test2"]) 简单

  • 学点简单的Django之第一个Django程序的实现

    这里采用PyCharm专业版可以直接创建Django项目,这里面自动部署了Django的基本环境.在创建项目时选择Django项目: 第一次建立Django项目时可能需要一段时间去等待下载相关的依赖环境. 我们可以在Terminal中输入python -m django --version来查看当前的Django版本,或者也可以在PyCharm的系统偏好设置中查看相关版本信息. 建立完成后自动生成了如下的一些文件. 不知道是环境问题还是什么问题,Django3.1.4的新建项目直接运行会报错Na

  • SQL中简单的格式转换方式

    先给大家介绍下SQL中简单的格式转换 1.to_number() select to_number('2015') from dual ---2015 2.to_char() --不需要转换格式 select to_char(2015) from dual ---'2015' --需要转换格式 select to_char(1, '$000') from dual --- $001 select to_char(2212, '$999999') from dual ---$2212 3.to_d

随机推荐