我有一个返回HttpResponse的视图:
file_name = 'rel_acao_{}.xlsx'.format(dt.now().strftime("%Y%m%d"))
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename={}'.format(file_name)
writer = pd.ExcelWriter(response)
df_1.to_excel(writer, sheet_name='Sheet1')
df_2.to_excel(writer, sheet_name='Sheet2')
writer.save()
return response
使用以下按钮调用这些视图:
<div>
<button id="btn_Export" type="button" onclick="sendReport()">
Export to Excel
</button>
</div>
反过来调用以下函数:
// Dispatch
function sendReport(){
$.ajax({
url: "{% url 'report_action:report_action_csv' %}",
type: 'POST',
data: {
'followup': JSON.stringify(followup),
'report': JSON.stringify(report)
}
});
}
为什么我无法下载文件? 我做错了什么?
答案 0 :(得分:1)
实际上,最简单的方法是使用<form>
包装按钮,在此表单的隐藏字段中设置请求参数,并将action
属性设置为您的网址。然后,您可以完全删除JS代码,只需按下按钮即可提交表单。因此,当按下按钮时,表单将被提交,浏览器将正确处理响应并显示下载对话框。