Django异步查询并下载CSV文件

2024-09-01 17:04
文章标签 查询 django 异步 csv 下载

本文主要是介绍Django异步查询并下载CSV文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Django异步查询并下载CSV文件

通过循环遍历数据库,自动生成CSV文件的表头和内容.
Django V5.1

1. 视图

1.1 将同步的数据库查询转换为异步

async def get_blogs():# 使用sync_to_async包装Queryset方法blog_list = await sync_to_async(Blog.objects.all)()return blog_list

1.2 定义一个异步生成器逐行生成CSV数据

async def generate_csv():# 获取queryset listblogs = await get_blogs()# 生成csv文件头async for blog in blogs.values():# 打印查看遍历的内容 await sync_to_async(print)(blog.keys())yield ','.join(blog.keys()) + '\n'break# 生成csv文件内容async for values in blogs.values_list():# 打印查看遍历的内容 await sync_to_async(print)(values)yield ','.join(map(str, values)) + '\n'

1.3 异步下载

async def export_csv(request):response = StreamingHttpResponse(generate_csv(),content_type='text/csv')response['Content-Disposition'] = 'attachment; filename="blogs.csv"'return response

2. 模板

    <div class="container-fluid mt-3"><form action="{% url 'blog:export_csv' %}">{% csrf_token %}<button type="submit" class="btn btn-primary form-control">异步下载测试</button></form></div>

3. url

path('export-csv', views.export_csv, name="export_csv")

4. model

class Blog(models.Model):title = models.CharField(max_length=200, verbose_name="标题")content = models.TextField(verbose_name="内容")pub_time = models.DateTimeField(auto_now_add=True, verbose_name="发布时间")category = models.ForeignKey(to=BlogCategory, on_delete=models.CASCADE, verbose_name="分类")author = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name="作者")class Meta:verbose_name = "博客"verbose_name_plural = verbose_nameordering = ['-pub_time']def __str__(self):return self.title

亲测有效

在这里插入图片描述

这篇关于Django异步查询并下载CSV文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127534

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以