【问题标题】:Embed PDF media file in Django template在 Django 模板中嵌入 PDF 媒体文件
【发布时间】:2020-11-25 21:35:12
【问题描述】:

问题是我想通过<embed><iframe>标签嵌入PDF文件,或者使用{{ object.file.url }}在Django模板中的类似标签,这被认为是保存在/MEDIA/文件夹中的文件一个 Django 模型。

事实是,如果我嵌入来自/STATIC/ 文件夹的 PDF 文件,一切都会顺利进行。但是,如果我尝试对 {{ object.file.url }} 进行相同操作,它就不起作用了。

奇怪的是,如果我简单地显示{% static 'path/pdf.pdf' %}{{ object.file.url }},它们都会给我一个像这样的有效链接:

/static/img/111.pdf
/media/projects/phases-guide/111.pdf

如果我尝试单独打开它们,它们会完美运行。但是在将它们嵌入到 HTML 标签中时,它只适用于静态 url 文件。

谁能告诉我为什么会这样?

无论如何,除了“来自媒体文件夹根目录的嵌入文件”还有其他选择吗?

我尝试启用读取媒体文件,但无论如何它不起作用。

【问题讨论】:

  • 这里有同样的问题。 Windows 10、Chrome 和 Edge。

标签: django templates pdf embed media


【解决方案1】:

问题是在您尝试嵌入的 MEDIA 文件上启用了点击劫持保护。 您可以在浏览器的开发人员模式下的错误控制台中看到,“X-Frame-Options”设置为“拒绝”用于 MEDIA 文件,但不用于 STATIC 文件。

有几种方法可以使用方法或类装饰器更改每个视图,但这在我的代码中不起作用,因此我在 SETTINGS.py 中进行了如下一般更改:

X_FRAME_OPTIONS = ”SAMEORIGIN”

然后它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2021-01-25
    • 2021-06-03
    • 1970-01-01
    • 2016-02-09
    • 2012-06-02
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多