利用 Django 输出 CSV

    Python 有用一个 CSV 库 。它配合 Django 使用的关键是 csv 模块的 CSV 创建行为作用于类文件对象,而 Django 的 对象也是类文件对象。

    这有个例子:

    代码和注释应该是不言自明的,但是有几件事值得提一下:

    • 响应指定了特殊的 MIME 类型 text/csv。这告诉浏览器该文档是一个 CSV 文件,而不是一个 HTML 文件。如果你没这么干,浏览器可能会将输出视作 HTML,这会在浏览器窗口展示丑陋的,恐怖的官样文章。
    • 你需将 response 作为第一个参数传给 来接入生成 CSV API 。 csv.writer 函数期望一个类文件对象,而 HttpResponse 对象满足该要求。
    • 要按行输出 CSV 文件,调用 writer.writerrow,传入一个 参数。

    在本例中,我们充分利用 Python 的生成器,高效地处理大型 CSV 文件的装配和输出任务:

    或者,你也能用 Djano 模板系统 生成 CSV。这比使用方便的 模块级别低点,但是,解决方案就在这,你可以选。

    办法就是将项目列表传给模板,让模板在 for 循环中输出逗号。

    本例与前例唯一的不同是本例使用模板加载,而不是 CSV 模块。剩下的代码都一样,例如 content_type='text/csv'

    然后,用模板代码创建模板 my_template_name.txt

    这个简短的模板遍历所给的数据,并为每行生成一个 CSV 行。它利用 模板过滤器确保引号不会引发任何问题。