Django 3.0 - 在浏览器中查看 PDF

Django 3.0 - View a PDF in the browser

我只想单击 link 并在浏览器中查看我已上传到我的 Django 项目的 PDF。可以肯定的是,在 Django 文档 (https://docs.djangoproject.com/en/3.1/howto/outputting-pdf/) 中关于如何创建报告的内容完全不是我想要做的。我不需要生成 PDF,我已经有了我需要的。 (这在其他答案中出现了很多。)

运气不好:Render HTML to PDF in Django site(不足为奇,已经 11 年了)

或者:Django - JS : How to display the first PDF page as cover(有点惊讶这不是唯一一次出现包含 pdf.js 的建议,我只是在我的页面上得到一个空的白色方块,没有进一步的错误)。

我也曾尝试将 PDF 嵌入到模板中,但没有成功。 (Recommended way to embed PDF in HTML?) (尝试了 <embed><iframe>,正如您在 link pdf.js 中看到的那样。不行。)

一般情况下,如何在 Django 中专门完成此操作 3.x?

谢谢。

有几种方法可以做到这一点。我不确定您是在谈论用户上传的文件,还是静态文件。

方法一

只需 link 从模板到相关文件。 对于用户上传的文件

{% load static %}
<a href="{% get_media_prefix %}name_of_pdf.pdf">Click Me</a>

对于静态文件

{% load static %}
<a href="{% static 'name_of_pdf.pdf' %}">Click Me</a>

方法

如果您尝试从视图return 文件

from django.http import FileResponse


def load_file(request):
    file = ... # get file somehow
    return FileResponse(file)

有关详细信息,请参阅 django docs。如果该文件来自您的静态文件夹,您可以只使用 pythons open 来读取它。这取决于您提供静态文件的方式。

如果此 pdf 是用户上传的文件,附加到模型,您可以通过相应的字段访问它。