一周学会Django5 Python Web开发-Django5二进制文件下载响应

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/响应内容除了返回网页信息外,还可以实现文件下载功能,是网站常用的功能之一。

Django提供三种方式实现文件下载功能,分别是HttpResponse、StreamingHttpResponse和 FileResponse,三者的说明如下:

  • HttpResponse是所有响应过程的核心类,它的底层功能类是HttpResponseBase。

  • StreamingHttpResponse是在 HttpResponseBase的基础上进行继承与重写的,它实现流式响应输出(流式响应输出是使用Python的迭代器将数据进行分段处理并传输的),适用于大规模数据响应和文件传输响应。

  • FileResponse是在StreamingHttpResponse 的基础上进行继承与重写的,它实现文件的流式响应输出,只适用于文件传输响应。

我们通过实例来看下如何应用:

我们准备一个文件,这里我们用一个exe二进制文件。放D盘根目录。

views.py里写方法实现方法:

# 定义文件路径
file_path = "D:\\360zip_setup.exe"def download_file1(request):file = open(file_path, 'rb')  # 打开文件response = HttpResponse(file)  # 创建HttpResponse对象response['Content_Type'] = 'application/octet-stream'response['Content-Disposition'] = 'attachment;filename=file1.exe'return responsedef download_file2(request):file = open(file_path, 'rb')  # 打开文件response = StreamingHttpResponse(file)  # 创建StreamingHttpResponse对象response['Content_Type'] = 'application/octet-stream'response['Content-Disposition'] = 'attachment;filename=file2.exe'return responsedef download_file3(request):file = open(file_path, 'rb')  # 打开文件response = FileResponse(file)  # 创建FileResponse对象response['Content_Type'] = 'application/octet-stream'response['Content-Disposition'] = 'attachment;filename=file3.exe'return response

urls.py里定义下映射:

path('download1', helloWorld.views.download_file1),path('download2', helloWorld.views.download_file2),path('download3', helloWorld.views.download_file3)

为了方便测试,我们static目录下新建一个download.html静态文件:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>下载测试</title>
</head>
<body>
<a href="/download1">下载测试一:HttpResponse</a><br>
<a href="/download2">下载测试二:StreamingHttpResponse</a><br>
<a href="/download3">下载测试三:FileResponse</a>
</body>
</html>

页面输入:http://127.0.0.1:8000/static/download.html 测试:

分别点击下载测试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 BroadcastChannel 实现跨标签页通信及页面跳

引言 在现代Web应用程序开发中&#xff0c;尤其是基于Vue.js构建的单页面应用&#xff08;SPA&#xff09;&#xff0c;跨标签页的数据同步与页面控制是一项常见需求。本文将探讨如何巧妙地结合HTML5的BroadcastChannel API和Vue Router来实现跨标签页通信&#xff0c;并在此基…

【无标题】npm使用淘宝镜像安装luckyExcel不行

问题描述&#xff1a; npm使用淘宝镜像安装luckyExcel 一直停留在still…下载不下来 原因分析&#xff1a; 淘宝镜像已从registry.npm.taobao.org 改为https://registry.npmmirror.com 切换镜像后就能正常下载luckyExcel 解决方案&#xff1a; // 1. 清空缓存 npm cache cle…

【Git教程】(三)提交详解 —— add、commit、status、stach命令的说明,提交散列值与历史,多次提交及忽略 ~

Git教程 提交详解 1️⃣ 访问权限与时间戳2️⃣ add命令与 commit 命令3️⃣ 提交散列值4️⃣ 提交历史5️⃣ 一种特别的提交查看方法6️⃣ 同一项目的多部不同历史6.1 部分输出&#xff1a;-n6.2 格式化输出&#xff1a;--format、--oneline6.3 统计修改信息&#xff1a;--st…

《Sora视频生成技术探秘:从压缩到生成,语言理解引领创新》

Sora背后的技术原理&#xff1a;深度探索Video Compression Network与Transformer模型在视频生成中的应用 摘要 随着人工智能技术的不断发展和创新&#xff0c;视频生成技术在许多领域中都得到了广泛的应用。作为一种前沿的视频生成技术&#xff0c;Sora凭借其高效的视频处理…

C++初阶 | [八] (下) vector 模拟实现

摘要&#xff1a;vector 模拟实现讲解&#xff08;附代码示例&#xff09;&#xff0c;隐藏的浅拷贝&#xff0c;迭代器失效 在进行 vector 的模拟实现之前&#xff0c;我们先粗略浏览一下 stl_vector.h 文件中的源码来确定模拟实现的大体框架。 这里提供一些粗略浏览源码的技巧…

go环境安装-基于vscode的Windows安装

1、vscode安装 官网链接&#xff1a;https://code.visualstudio.com/ 选择相应的版本&#xff0c;这里选择Windows下的 下载得到一个VSCodeUserSetUp-x64的可执行文件&#xff0c;双击执行&#xff0c;选择要安装的路径&#xff0c;下一步。 2、go语言安装 官网链接&#x…

【Unity自制手册】Unity—Camera相机跟随的方法大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

搭建freqtrade量化交易机器人

本文采用python量化机器人框架 freqtrade 开始操作&#xff01; freqtrade官方文档 官方文档内容过多&#xff0c;请先跟随本文入门阅读&#xff0c;后续深入学习可参考官方文档&#xff5e; 1. 准备云服务器 docker 环境 这里以云服务器选择 ubuntu 系统开始&#xff0c;先…

微信小程序的医院体检预约管理系统springboot+uniapp+python

本系统设计的目的是建立一个简化信息管理工作、便于操作的体检导引平台。共有以下四个模块&#xff1a; uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 语言&#xff1a;pythonjavanode.js…

VBA来创建一个新的 Excel 文件

前言 其他的宏指令执行的前提条件是创建一个新的xlsx文件,来存储操作完成后的结果.否则会因为缺少操作对象,出现1004错误. Sub CreateNewFile()Dim xlApp As ObjectDim xlWB As Object 创建一个新的 Excel 应用程序对象Set xlApp CreateObject("Excel.Application")…

docker学习快速入门

目录 Linux下安装docker配置阿里云镜像加速docker命令部署安装Tomcat、ES容器数据卷DockerFiledocker网络制作tomcat镜像Redis集群部署SpringBoot微服务打包docker镜像拓展 什么是Docker Docker是内核级别的虚拟化&#xff0c;可以在一个物理机上可以运行很多的容器实例。服务…

Unity使用PlayableAPI 动态播放动画

1.初始化animator&#xff0c;创建Playable图&#xff0c;创建动画Playable private void InitAnimator(GameObject headGo) {if (headGo){_headAnimator headGo.GetComponent<Animator>();if (_headAnimator){_headAnimator.cullingMode AnimatorCullingMode.AlwaysA…

【面试】找工作历程

简单介绍一下自己&#xff1a;本科双非一本&#xff0c;22年毕业&#xff0c;工作一段时间到24年1月份辞职&#xff0c;怎么说实习加正式&#xff0c;工作了大概两年&#xff0c;年后准备换工作&#xff0c;目前IP上海。 2024.2.26 第一天正式投简历投了boss的上限&#xff0c;…

Sentinel 动态规则扩展

一、规则 Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观&#xff0c;…

主机字节序与网络字节序

大端序和小端序 大端序&#xff08;Big Endian&#xff09;和小端序&#xff08;Little Endian&#xff09;是两种计算机存储数据的方式。 大端序指的是将数据的高位字节存储在内存的低地址处&#xff0c;而将低位字节存储在内存的高地址处。这类似于我们阅读多位数时从左往右…

YOLOv6代码解读[05] yolov6/core/engine.py文件解读

#!/usr/bin/env python3 # -*- coding:utf-8 -*- from ast import Pass import os import os.path as osp import time from copy import deepcopy from tqdm import tqdm import cv2 import numpy as np import mathimport torch from torch.cuda

新版vscode remote ssh不兼容老系统 (waiting for server log)

参考知乎-萌萌哒赫萝​ 最近vscode发布了1.86版本&#xff0c;该版本中&#xff0c;更新了对glibc的要求( ≥ \geq ≥ 2.28)&#xff0c;导致各种旧版本的linux发行版&#xff08;如centos 7&#xff09;都无法用remote-ssh来连接了&#xff0c;会一直控制台报错waiting for s…

迁移学习 领域自适应

迁移学习 什么是迁移学习 迁移学习是机器学习领域用于标记数据难获取这一基础问题的重要手段&#xff0c; 将训练好的内容应用到新的任务上被称为迁移学习。 由于这个过程发生在两个领域间&#xff0c;已有的知识和数据也就是被迁移的对象被称为源域&#xff0c;被赋予经验…

防火墙的内容安全

目录 1. 内容安全 1.1 IAE引擎 DPI---深度包检测技术 DFI---深度流检测技术 结论(优缺点)&#xff1a; 1.2 入侵防御&#xff08;检测&#xff09;(IPS) IPS的优势: 入侵检测的方法: 入侵检测的流程 签名 查看预定义签名的内容 新建自定义签名 入侵防御的检测…

面试题解答

题目 为管理业务培训信息&#xff0c;现需建立3个表&#xff1a; 表S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号&#xff0c;学员姓名&#xff0c;所属单位&#xff0c;学员年龄、 表C(C#,CN)C#,CN分别代表课程编号&#xff0c;课程名称 表SC(S#,C#,G)S#,C#,G分别代表学号&#xf…