You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中使用embed标签加载PDF文件失败的问题求助

Django PDF加载404问题排查与解决

我来帮你搞定这个PDF加载404的问题,核心原因是开发模式下Django不会自动托管媒体文件,下面一步步来排查解决:

1. 最关键的修复:配置媒体文件URL路由

Django在DEBUG=True的开发环境中,默认不会处理媒体文件的HTTP请求,必须在根URL配置文件(也就是你的etalentNET/urls.py)里添加专门的路由规则,让Django能找到并返回你的PDF文件。

修改根urls.py的具体操作:

打开etalentNET/urls.py,补充以下代码:

from django.conf import settings
from django.conf.urls.static import static

# 你已有的路由规则(比如admin、INTRANET的路由)保持不变
urlpatterns = [
    path('admin/', admin.site.urls),
    path('INTRANET/', include('INTRANET.urls')),
    # 其他已有的路由...
]

# 仅在开发环境下添加媒体文件服务路由
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这段代码的作用是:当DEBUG为True时,把MEDIA_URL对应的请求映射到MEDIA_ROOT指定的本地目录,这样Django就能正确返回你的PDF文件了。

2. 确认MEDIA_ROOT路径是否正确

虽然你说文件确实在目标路径,但可以再验证一下MEDIA_ROOT的绝对路径是否和实际存储路径一致:
在终端运行Django shell:

python manage.py shell

然后输入以下代码查看路径:

from django.conf import settings
print(settings.MEDIA_ROOT)

输出的绝对路径应该和你本地存储文件的路径完全匹配,比如如果你的项目根目录是/Users/yourname/etalentNET,那么MEDIA_ROOT应该是/Users/yourname/etalentNET/INTRANET/uploads,确保curriculums/CV_2017.pdf确实在这个目录下。

3. 检查文件权限(可选)

如果前面两步都没问题,可能是文件权限导致服务器读取不到文件:
在Linux/macOS下可以执行以下命令赋予文件可读权限:

chmod 644 INTRANET/uploads/curriculums/CV_2017.pdf

Windows系统一般不需要额外设置权限,确保文件没有被锁定即可。

4. 验证模板中的路径输出

最后,检查页面源码里embed标签的src属性是否正确:打开网页后右键查看源码,找到embed标签,确认src的值是/INTRANET/uploads/curriculums/CV_2017.pdf,和你访问的URL一致。

完成以上步骤后,重启Django开发服务器,应该就能正常加载PDF文件了。

内容的提问来源于stack exchange,提问作者Nicolas Fuchs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:48:29