11

WebアプリのアクションからCSVを返そうとしていますが、ファイルをダウンロードするか、スプレッドシートアプリから開くようにユーザーにプロンプ​​トを表示します。CSVを画面に吐き出すことはできますが、ファイルの種類を変更して、これがHTMLとして表示されることを想定していないことをブラウザーが認識できるようにするにはどうすればよいですか?これにcsvモジュールを使用できますか?

import csv

def results_csv(self):

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

    return data
4

3 に答える 3

12

Content-type提供するコンテンツのタイプをブラウザに伝えるには、ヘッダーを「text/csv」に設定する必要があります。Pylons 関数では、次のようにして作業を行う必要があります。

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

于 2009-04-26T00:45:28.953 に答える
9

PAGは正しいですが、さらにダウンロードしたファイルの名前を提案したい場合は、設定することもできますresponse.headers['Content-disposition'] = 'attachment; filename=suggest.csv'

于 2009-04-26T02:29:20.763 に答える
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()
于 2009-09-17T19:56:02.280 に答える