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 回答