2

ここでDjangoのドキュメントに従って、CSVファイルを作成しています。私のurls.pyには。がありurl(r'^reports/csv_list_report/$', 'csv_list_report')ます。

ダウンロードボタンをクリックしたときにCSVファイルをダウンロードしてほしい。だから私はここでjQueryを使用します:

$('#download_button').click(function(){
    $.get('/reports/csv_list_report/');
});

ファイアバグで応答を確認できますが、ブラウザがファイルをダウンロードしません。

これが私の見解です:

def csv_list_report(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename="reports.csv"'
    writer = csv.writer(response)
    writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])
    writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', "Here's a quote"])

return response

それで、おそらくGETの後で、成功したときの応答を処理するために何かを書く必要がありますか?調べてみると、CSVファイルの作成方法についてはたくさんの答えがありますが、応答を処理するために何をする必要があるかなど、答えは見つかりませんでした。

4

1 に答える 1

7

ブラウザにAJAXを介してファイルをダウンロードさせることはできません(これは、jQueryを使用するときに実行することです$.get)。直接同期HTTP接続を確立する必要があります。

の代わりに$.get、これを試してください:

location.replace('/reports/csv_list_report/');

関連: jsまたはクエリによる強制ダウンロード

于 2012-12-19T11:45:04.380 に答える