如何从Pylons应用返回CSV?
我正在尝试在我的网页应用中返回一个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'
12
为了让浏览器知道你给它的内容是什么类型,你需要把 Content-type
这个头信息设置为 'text/csv'。在你的 Pylons 函数里,可以这样做:
response.headers['Content-type'] = 'text/csv'