Django -生成csv文件

本文介绍了如何使用Python内置的csv库创建、读取CSV文件,并提供了一个在Django视图中生成CSV下载的示例。重点讲解了设置Content-Type和Content-Disposition标头以正确下载文件。

一、定义

逗号分隔值(Comma-Separated Values,CSV,有时也成为字符分隔值,因为分割字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)

说明:可被常见制表工具,如excel等直接进行读取

二、python中生成csv文件

Python提供了内建库 - csv;可直接通过该库操作csv文件

案例如下:

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['a', 'b', 'c'])

在这里插入图片描述

三、csv文件下载

在网站中,实现下载csv,注意如下:

相应Content-Type类型需要修改为text/csv

这是告诉浏览器该文档是csv文件,而不是HTML文件

响应会获得一个额外的Content-Disposition标头,其中包含CSV文件的名称

它将被浏览器用于开启"另存问…"对话框

案例代码:

import csv
from django.http import HttpResponse
from .models import Book

def make_csv_view(request):
    # 定义响应对象
    response = HttpResponse(content_type='text/csv')
    # 添加Content-Disposition标头
    response['Content-Disposition'] = 'attachment;filename="mybook.csv"'
    # 查找数据
    all_book = Book.object.all()
    # 响应对象传递给writer,往response中写
    writer = csv.writer(response)
    # 写表头
    writer.writerow(['id','title'])
    # 写数据
    for book in all_book:
        writer.writerow([book.id, book.title])
    # 返回响应
    return response
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值