辞書をcsvに変換して、その場でcsvファイルをダウンロードしようとしています。応答を返すと、httpresponseの行が表示されます。しかし、私はローカルマシンのCSVファイルにコンテンツをダウンロードしたい。http応答でcsvファイルがダウンロードされない
def export_csv_from_dict(data):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="accounts.csv"'
keys = data[0].keys()
dict_writer = csv.DictWriter(response, keys)
dict_writer.writeheader()
dict_writer.writerows(data)
return response
def accounts_function(request):
# rows is a list of dictionary [{'name': 'a'}, {'name': 'b'}]
rows = get_rows_data(matched_accounts)
return data.export_csv_from_dict(rows)
私は、一時ファイルへの書き込みとのFileWrapperでそれを返す使用して、FileResponseを使用して、などのFileWrapperとして、私はstackoverflowの上で見た多くの異なった方法を試してみました。また、StringIOを使って試しました。誰も私が何をしたいのかとは思わない。誰かが私が間違っていることを説明することはできますか?ありがとう。
クロムデバッガでは、目的のCSV形式の適切な内容が表示されます。それは、コンピュータのウィンドウ/アクションへのダウンロードをポップアップしません。
ここで私はそれを引き起こしています。
# rows is a list of dictionary [{'name': 'a'}, {'name': 'b'}]
これは致命的な建設のようだ:私はベースにあなたのコードを発見しているずさんなエラーがあります。この
$('#exp_csv').click(function(){
$.ajax({
'url': '/targeturl/',
'type': 'get',
data: {
'exp_csv': true,
'search_string': search
},
success: function(response){
// do something
},
error: function(){
// do something else
}
})
});
可能な複製(http://stackoverflow.com/questions/1156246/having-django-serve-downloadable-files)私はいつも、私はジャンゴを使用していたこの背中を達成 –
リンクされた質問の答えのように、mimetypeを 'application/force-download'に設定します。 –
djangoでmimetypeを使用することはできません。コンテンツタイプをapplication/force-downloadに設定しようとすると、ダウンロードは強制されません。また、これはベストプラクティスではないが、ハックのようなものに関するいくつかのコメントを見た。 –