django 中下载文件与下载保存为excel

一、django 中下载文件

在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载。

1、前端

实现方式:a标签+响应头信息(当然你可以选择form实现)

<div class="col-md-4"><a href="{% url ‘download‘ %}" rel="external nofollow" >点我下载</a></div>

2、Url

路由url:

url(r‘^download/‘,views.download,name="download"),

3、后端

方式一:使用HttpResponse

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
使用总结
三种http响应对象在django官网都有介绍.入口:https://docs.djangoproject.com/en/1.11/ref/request-response/
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

二、django导出excel文件

1、前端

实现方式:a标签+响应头信息(当然你可以选择form实现)

<div class="col-md-4"><a href="{% url ‘download‘ %}" rel="external nofollow" >点我下载</a></div>

2、Url

路由url:

url(r‘^download/‘,views.download,name="download"),

3、后端

# 导入render和HttpResponse模块from django.shortcuts import render, HttpResponsefrom io import BytesIOimport xlwt# 导出excel数据def download(request):    # 设置HTTPResponse的类型    response = HttpResponse(content_type=‘application/vnd.ms-excel‘)    response[‘Content-Disposition‘] = ‘attachment;filename=test.xls‘    # 创建一个文件对象    wb = xlwt.Workbook(encoding=‘utf8‘)    # 创建一个sheet对象    sheet = wb.add_sheet(‘order-sheet‘)

    # 设置文件头的样式,这个不是必须的可以根据自己的需求进行更改    style_heading = xlwt.easyxf("""            font:                name Arial,                colour_index white,                bold on,                height 0xA0;            align:                wrap off,                vert center,                horiz center;            pattern:                pattern solid,                fore-colour 0x19;            borders:                left THIN,                right THIN,                top THIN,                bottom THIN;            """)

    # 写入文件标题    sheet.write(0, 0, ‘申请编号‘, style_heading)    sheet.write(0, 1, ‘客户名称‘, style_heading)    sheet.write(0, 2, ‘联系方式‘, style_heading)    sheet.write(0, 3, ‘身份证号码‘, style_heading)    sheet.write(0, 4, ‘办理日期‘, style_heading)    sheet.write(0, 5, ‘处理人‘, style_heading)    sheet.write(0, 6, ‘处理状态‘, style_heading)    sheet.write(0, 7, ‘处理时间‘, style_heading)

    # 写入数据    data_row = 1    # UserTable.objects.all()这个是查询条件,可以根据自己的实际需求做调整.    a=models.UserTable.objects.all()    print(a)    for i in models.UserTable.objects.all():        # 格式化datetime        pri_time = i.pri_date.strftime(‘%Y-%m-%d‘)        oper_time = i.operating_time.strftime(‘%Y-%m-%d‘)        sheet.write(data_row, 0, i.loan_id)        sheet.write(data_row, 1, i.name)        sheet.write(data_row, 2, i.user_phone)        sheet.write(data_row, 3, i.user_card)        sheet.write(data_row, 4, pri_time)        sheet.write(data_row, 5, i.emp.emp_name)        sheet.write(data_row, 6, i.statu.statu_name)        sheet.write(data_row, 7, oper_time)        data_row = data_row + 1

# 写入数据,使用原生SQL方式?????????????????

    # 写出到IO    output = BytesIO()    wb.save(output)    # 重新定位到开始    output.seek(0)    response.write(output.getvalue())    return response

整理自:

https://www.jb51.net/article/137790.htm

https://blog.csdn.net/qq_33196814/article/details/81486843

原文地址:https://www.cnblogs.com/xibuhaohao/p/10419105.html

时间: 2024-10-11 15:00:42

django 中下载文件与下载保存为excel的相关文章

利用wget下载文件,并保存到指定目录

利用WGET下载文件,并保存到指定目录 [email protected] ~/下载 $ wget -P /home/cbx/下载/PDF https://www.linuxmint.com/documentation/user-guide/Cinnamon/chinese_16.0.pdf https://www.linuxmint.com/documentation.php wget是Linux上一个非常不错的下载指令,而其指令的内容虽然说是非常简单,但内藏许多的参数,也算是Linux工作者

AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中

1.下载文件 和进度条处理代码 - (void)timer:(NSTimer *)timer{ // 另一个View中 进度条progress属性赋值 _downloadView.progress = self.pressing; if (self.pressing >= 1.0) { [timer invalidate]; } } -(void)downloadWithUrlString:(NSString *)urlString { //1.创建会话管理者 AFHTTPSessionMana

django中静态文件路径配置

#环境:ubuntu12.04+python27+django1.4.2+[ngix]+fastcgi; #如果经过ngix服务器的话无疑可以在任意位置放置,只要在ngix中配置相关的路径文件,但很多时候在调试时我们不想经过ngix服务器,那就需要对django进行静态文件的路径配置. #首先我想把我的静态文件放在项目的根目录下,创建一个static的文件夹,为了便于显示效果,我在static下放置了一个sa.txt文件,里面随意写一些内容! #文件目录如图所示: #打开settings.py文

django中处理文件上传文件

1 template模版文件uploadfile.html 特别注意的是,只有当request方法是POST,且发送request的<form>有属性enctype="multipart/form-data"时,request.FILES中包含文件数据,否则request.FILES为空. <form method="post" action="" enctype="multipart/form-data"

django 中静态文件项目加载问题

问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件.整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与.我写的部分的js代码遇到点问题,修改了相应的代码后整个项目没有按照我的设想改变. 解决: 在项目中执行 python manage.py collectstatic 该命令收集项目下的静态文件,统一保存到 项目配置文件下的STATIC_ROOT.以重新加载静态文件. 原文地址:https://www.c

django中migration文件是干啥的

昨天很蠢的问leader git push的时候会不会把本地的数据库文件上传上去,意思是django中那些migration文件修改之后会不会上传. 然后得知不会,因为所有的数据库都存在本机的mysql啊,怎么可能传过去呢?然后同时还有.gitignore文件啊,过滤了很多文件. 同时我以为migration文件就是数据库文件,然而实际上是什么呢? 是操作数据库的文件,会通过这个去创建一系列的表.看看内容就知道了: class Migration(SchemaMigration): def fo

php 下载文件/直接下载数据内容

思路步骤 * 定义参数 * 魔术方法 * 执行下载 * 获取设置属性函数 * 获取设置文件mime 类型 * 获取设置下载文件名 * 设置header * 下载函数 实现代码 class DownFile{ // 定义参数 public $data; // 下载的数据或文件名 public $is_con=false; // 是否是下载内容 public $down_file_name; // 下载后的文件名 public $mime_type; //下载时设置的文件类型 public $fil

Django中,图片显示问题--Django中静态文件处理方法指南

html网页中要显示一张JPG图片,可是怎么放都是显示不了. 后来搞明白,这个涉及静态文件的处理方法. 在urls.py中添加一行: urlpatterns = patterns('', (r'^site_media/(?P<path>.*)','django.views.static.serve',{'document_root':'E:/media'}), }然后在html页面中,写入 <p><img src="/site_media/gmshi.jpg&quo

django中html文件的配置

先建立一个app,别忘了在seetings中加入你新建的qpp项目 链接:http://www.cnblogs.com/ZHANG576433951/p/6853362.html 在blog的目录下建立一个文件夹templates,在templates中写入index文件,如图: 需修改文件有 urls.py和views.py url.py 1 """app URL Configuration 2 3 The `urlpatterns` list routes URLs to