python - 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 的消息。
解决方案
你应该在你的回复中加入特殊的标题
Content-Disposition: attachment; filename="cool.html"
response = FileResponse(open(file_path, 'rb'))
response['Content-Disposition'] = 'attachment; filename="cool.html"'
return response
推荐阅读
- javascript - 如何让 Jest 看到我为 MongoDB Stitch 编写的函数?
- java - 逐个字段获取数据并将其放入哈希表中,尝试获取列 3、4、5 并通过 CSV 文件将它们与百分位数配对
- c# - 如何在 Visual C# 中创建热键?
- flutter - 更改主题颜色
- spring-boot - 在 Thymeleaf 中使用表单创建 url
- angular - Angular 动态组件:如何设置和获取数据
- python - 当我尝试在感知器算法中更新权重向量时,为什么会出现 matmul 不匹配错误?
- database - 为什么在将电子邮件数据发送到我的数据库时出现错误?
- javascript - console.log() 对象不会记录通过节点 js 控制台中的原型添加的方法。或者如何打印原型?
- python - networkx 设置复杂节点属性