我試圖將字典轉換爲csv,然後即時下載csv文件。當我返回響應時,我看到了httpresponse中的行。但我希望它將內容下載到本地計算機的csv文件中。csv文件無法通過http響應下載
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它。還嘗試使用StringIO。沒有人似乎在做我想要發生的事情。有人可以解釋我做錯了什麼,請。謝謝。
在Chrome調試器中,我看到所需csv格式的正確內容。它不會彈出下載到電腦窗口/動作。
現在我正在觸發它。不要以爲這
$('#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
}
})
});
[在Django的服務下載的文件]中可能的複製(http://stackoverflow.com/questions/1156246/having-django-serve-downloadable-files) –
我總是完成,當我使用Django此回通過設置mimetype爲'application/force-download'就像鏈接問題的答案一樣。 –
無法在django中使用mimetype,並且當我嘗試將內容類型設置爲application/force-download時,它不會強制下載它。我還看到一些關於這不是最佳做法的評論,但有點像黑客。 –