一、定义

逗号分隔值(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'])

20. Django进阶:生成csv文件_数据

三、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