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

移除Django项目/admin路径后,后台PDF文件无法在浏览器打开

问题排查与解决:Django Admin根路径下媒体文件404错误

问题原因

当将admin.site.urls挂载到根路径''时,Django的URL路由会优先匹配admin的URL配置。而你通过static()添加的媒体文件路由是追加在urlpatterns末尾的,当访问/media/xxx这类路径时,admin的URLconf会先尝试匹配该路径——由于admin没有对应的路由规则,直接返回404,根本轮不到后面的媒体路由生效。

解决办法

方法1:调整路由顺序,让媒体路由优先匹配

修改urls.py,将媒体路由放在admin路由之前:

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = []

# 先添加媒体路由,确保优先被匹配
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# 再添加Admin根路径路由
urlpatterns += [
    path('', admin.site.urls),
]

方法2:用正则路由精确锁定媒体路径(更严谨)

如果担心路由匹配的模糊性,可通过正则表达式精确匹配/media/开头的路径,避免被admin路由拦截:

from django.contrib import admin
from django.urls import path, re_path
from django.conf import settings
from django.conf.urls.static import static

# 取出static()生成的媒体视图,用正则精确匹配路径
media_view = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)[0]

urlpatterns = [
    re_path(r'^media/(?P<path>.*)$', media_view),
    path('', admin.site.urls),
]

验证

修改完成后重启Django开发服务器,再次点击管理面板中的PDF文件链接,即可正常访问媒体文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:00