我在这里关注Django doc 来创建一个CSV文件.在我的urls.py中我有url(r'^reports/csv_list_report/$', 'csv_list_report').
我希望用户在单击下载按钮时下载CSV文件.所以我在这里使用jQuery:
$('#download_button').click(function(){
$.get('/reports/csv_list_report/');
});
Run Code Online (Sandbox Code Playgroud)
我可以在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
Run Code Online (Sandbox Code Playgroud)
所以也许在GET之后我需要写一些东西来处理成功的响应?搜索过,有很多关于如何创建CSV文件的答案,但没有找到任何答案,包括处理响应需要做什么.
你不能让浏览器通过AJAX下载文件(这就是jQuery在你使用时所做的事情$.get).您必须进行直接同步HTTP连接.
而不是$.get,试试这个:
location.replace('/reports/csv_list_report/');
Run Code Online (Sandbox Code Playgroud)
相关: 通过js或查询强制下载