如何从Pylons应用返回CSV?

11 投票
3 回答
2938 浏览
提问于 2025-04-15 11:15

我正在尝试在我的网页应用中返回一个CSV文件,并给用户一个提示,让他们下载这个文件或者用电子表格软件打开它。我可以把CSV内容显示在屏幕上,但我该怎么做才能让浏览器知道这个文件不是要作为HTML来显示的呢?我可以用csv模块来实现这个吗?

import csv

def results_csv(self):

    data = ['895', '898', '897']

    return data

3 个回答

8

是的,你可以使用csv模块来实现这个功能:

import csv
from cStringIO import StringIO

...

def results_csv(self):
    response.headers['Content-Type'] = 'text/csv'
    s = StringIO()
    writer = csv.writer(s)
    writer.writerow(['header', 'header', 'header'])
    writer.writerow([123, 456, 789])
    return s.getvalue()
9

PAG是对的,不过如果你想给下载的文件起个名字,可以设置一下这个内容:response.headers['Content-disposition'] = 'attachment; filename=suggest.csv'

。这样做的话,下载的文件就会叫“suggest.csv”了。

12

为了让浏览器知道你给它的内容是什么类型,你需要把 Content-type 这个头信息设置为 'text/csv'。在你的 Pylons 函数里,可以这样做:

response.headers['Content-type'] = 'text/csv'

撰写回答