2009-04-26 11 views
11

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

import csv 

def results_csv(self): 

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

    return data 

答えて

12

ブラウザにあなたがそれを与えているコンテンツの種類を伝えるために、あなたは「テキスト/ CSV」にContent-typeヘッダーを設定する必要があります。あなたのPylonsの機能では、以下のジョブを実行する必要があります。

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

9

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

+0

これは助けますが、ファイルには "suggest.csv.html"という名前が付いています。 –

+0

両方の応答ヘッダー(コンテンツタイプとコンテンツの配置)が正しく設定されていますか?この特殊な.html - 追加動作をどのブラウザが表示していますか? –

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() 
を3210
関連する問題