Django未配置静态路由且注释admin路由 为何admin静态文件仍可访问?
原理说明
- Django 开发服务器(
python manage.py runserver)内置了开发环境专属的静态文件托管能力:只要settings.py中DEBUG = True配置生效,runserver 启动时会自动加载静态文件服务逻辑,不需要你手动在urls.py中添加静态路由,也不需要额外部署 Nginx 等静态服务,这是 Django 为提升开发效率做的默认设计。 - Admin 相关静态资源可以被正常命中的原因:默认生成的 Django 项目会将
django.contrib.admin加入INSTALLED_APPS配置列表,同时 Django 静态文件查找器的默认配置中包含AppDirectoriesFinder,该查找器会自动扫描每个已安装 App 下的static目录来匹配请求的静态资源。你只是注释掉了 Admin 后台的动态路由,并没有将 Admin 从已安装 App 列表中移除,因此 Admin 自带的静态文件依然可以被查找器定位到并返回。
注意:该特性仅在本地开发场景生效,生产环境需要关闭
DEBUG,此时 runserver 不会再提供静态文件服务,必须配置 Nginx 等反向代理托管静态资源,且提前执行python manage.py collectstatic命令将所有 App 的静态文件汇总到统一的静态目录。
内容的提问来源于stack exchange,提问作者User28222VA
相关产品推荐
相关产品推荐

