首页 > 解决方案 > Django FileResponse 不下载 HTML 文件

问题描述

我正在尝试下载预先生成的 HTML 文件,但我尝试过的所有方法都不起作用。

搜索 StackOverflow 我发现 returnFileResponse(open(file_path, 'rb'))会下载一个文件,但不是下载,HTML 只是呈现在选项卡上。我认为问题在于浏览器接收 HTML 而不是显示“另存为”对话框,而是将其呈现到当前选项卡。

在我的主模板中,我有一个带有target="_blank"标签的表单和一个打开(没有 AJAX)一个新选项卡的提交按钮,该选项卡应该自动下载文件。

我想要什么:在我提交代码后,会出现一个新选项卡,与该 URL 相关的视图会执行一些代码(与下载无关),然后在该过程(工作正常)之后将 HTML 文件下载到设备。HTML存在并且没有任何问题,唯一的问题是我想下载文件但浏览器显示它。

注 1:是的,我知道使用正确的 clic -> 下载我可以下载我看到的 HTML,但是这个系统是为非 IT 人员准备的,我需要以最简单的方式进行操作。注意 2:我放了无 AJAX消息,因为我在另一篇文章中发现 FileResponsive 没有来自 AJAX 的消息。

标签: pythonhtmldjangodjango-viewsdjango-templates

解决方案


你应该在你的回复中加入特殊的标题

Content-Disposition: attachment; filename="cool.html"
response = FileResponse(open(file_path, 'rb'))
response['Content-Disposition'] = 'attachment; filename="cool.html"'
return response

推荐阅读