配置MEDIA资源服务路由后Django Admin页面返回404问题求助
问题根因
你的settings.py中MEDIA_URL配置错误,大概率设置为了/或空值,导致所有路径的请求都会优先匹配媒体文件静态服务路由,/admin/请求被django.views.static.serve拦截,尝试在MEDIA_ROOT目录下查找admin相关资源,找不到就返回404。
修复步骤
- 修改
settings.py中的MEDIA_URL配置,指定专属的媒体资源访问前缀,示例配置如下:
MEDIA_URL = '/media/'
注意前缀前后的斜杠不可省略,确保只有路径前缀为/media/的请求才会被媒体文件服务处理。
- 保持
urls.py中追加的+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)代码不变,确认路由配置顺序:urlpatterns列表中优先配置admin路由、业务路由,最后再追加媒体静态路由。 - 重启Django服务即可,修复后admin后台和媒体文件访问可同时正常工作。
注意事项
- 上述配置仅适用于开发环境,生产环境不要使用Django本身提供的静态文件服务,需用Nginx等反向代理服务处理媒体文件、静态资源的请求。
- 开发模式下需确保
settings.py中DEBUG = True,static()方法添加的路由才会生效。
内容的提问来源于stack exchange,提问作者Maxim Buz
相关产品推荐
相关产品推荐

