如何让浏览器下载Django CSV文件响应

时间:2012-12-19 11:38:08

标签: python django csv

我正在关注Django doc here来创建CSV文件。在我的urls.py中,我有url(r'^reports/csv_list_report/$', 'csv_list_report')

我希望用户在点击下载按钮时下载CSV文件。所以我在这里使用jQuery:

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

我可以在firebug中看到响应,但浏览器不会下载该文件。

以下是我的观点:

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文件的答案,但没有找到任何答案,包括处理响应需要做什么。

1 个答案:

答案 0 :(得分:7)

你不能让浏览器通过AJAX下载文件(这是jQuery在你使用$.get时所做的)。您必须建立直接的同步HTTP连接。

代替$.get,试试这个:

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

相关: Force download through js or query