Django访问静态文件提示Page Not Found无法加载CSS/JS资源求助
排查步骤
- 验证静态文件目录路径配置是否正确
在settings.py中加入以下代码,启动开发服务器后查看控制台输出的路径,是否和你实际存放theme文件夹的static目录绝对路径完全一致:
print("STATICFILES_DIRS 实际路径:", os.path.join(BASE_DIR, "static/"))
如果路径不对,调整BASE_DIR的计算逻辑,通常BASE_DIR默认定义为BASE_DIR = Path(__file__).resolve().parent.parent,对应项目根目录,如果你的settings.py存放层级有变动,需要对应修改.parent的数量。
- 检查主路由静态文件规则配置
打开项目根目录的urls.py,确认末尾已经添加了开发模式下的静态文件服务规则:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 你的原有路由配置 ] # 仅在Debug模式下提供静态文件服务 if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])
注意不要错把document_root设为STATIC_ROOT,STATIC_ROOT是执行collectstatic命令后导出静态文件的目录,开发阶段不需要配置。
检查静态文件实际层级和大小写
确认文件实际路径完全匹配:[项目根目录]/static/theme/assets/css/style.css,注意文件夹名称的大小写,即使Windows开发环境不区分大小写,Django的静态文件查找仍会严格匹配大小写规则。验证模板渲染结果
启动服务后打开首页,右键查看页面源码,检查style.css的最终渲染链接是否为http://localhost:8000/static/theme/assets/css/style.css,如果链接前缀和STATIC_URL不一致,检查是否有中间件或者反向代理修改了请求路径。检查静态文件查找器配置
确认settings.py中没有修改默认的STATICFILES_FINDERS配置,默认配置包含django.contrib.staticfiles.finders.FileSystemFinder,会从STATICFILES_DIRS中查找静态文件,如果你手动覆盖了这个配置项,需要把上述查找器加回去。
内容的提问来源于stack exchange,提问作者allaxim

