不是正确的下载类型的文件... Django

时间:2014-08-20 17:03:16

标签: python django

我正在尝试将一些数据下载/导出到Excel文件中。在我的视图/函数结束时,我有这个回报:

response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
response = render_to_response("facturas.html",context_instance=RequestContext(request), content_type='application/vnd.ms-excel')
book.save(response)
return response

我正在建立这是一个excel文件,文件的名称,我正在保存数据并返回响应

我正在函数的开头创建book变量:

book = xlwt.Workbook(encoding='utf8')
sheet = book.add_sheet('report')

然后应用一些风格等

正在发生的是该函数的导出部分正在下载“文件”类型而不是Excel文件。

enter image description here

如果您需要我添加视图的完整代码,我会添加它。

有谁知道为什么会这样??

任何建议都会非常欣赏。感谢

修改

我正在尝试导出的数据是在表格内部而且表格在表格内部(我有每行的复选框,用户可以选择要导出的文件,因此我创建了一个查询集选择的文件)

Form需要一个COntext_instance,这就是我使用render_to_response的原因。

如何在代码中更改此内容?

感谢所有答案。

2 个答案:

答案 0 :(得分:1)

塞尔吉奥是对的。现在,您要覆盖(第3行)您在第1行和第2行制作的回复。您不需要render_to_response。如果你想开始下载并返回一些HTML:这是不可能的。单个HTTP请求根本无法返回多个HTTP响应。

答案 1 :(得分:1)

第3行:

response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
response = render_to_response("facturas.html",context_instance=RequestContext(request), content_type='application/vnd.ms-excel')
book.save(response)
return response

您将HTTP文件作为下载文件返回,并丢失以前的设​​置。

删除第3行。