Django中Static Files Not Found错误排查求助
解决Django静态文件404的问题
嘿,我看你遇到了静态文件加载404的问题,咱们一步步来排查和解决:
核心问题:混淆了STATIC_ROOT和STATICFILES_DIRS的作用
你注释掉了STATICFILES_DIRS配置,这大概率是问题的根源。先理清这两个配置的区别:
STATIC_ROOT:这是生产环境下使用的目录,用来存放collectstatic命令收集所有静态文件后的目标文件夹,DEBUG模式下Django不会从这里读取静态文件。STATICFILES_DIRS:这是DEBUG模式下,Django查找静态文件的源目录列表,你需要把存放静态文件的源目录加到这里。
具体解决步骤
取消
STATICFILES_DIRS的注释
把settings.py里的这行注释去掉:STATICFILES_DIRS = [join(APPS_DIR, 'static')]这样Django在DEBUG模式下,就会去
APPS_DIR/static目录下查找你的静态文件。确认文件路径的准确性
检查你的静态文件是否真的存在于这个路径:APPS_DIR/static/core/js/jquery_countdown/jquery.countdown.min.js- 注意文件名和文件夹名的大小写(类Unix系统下区分大小写,比如
JQuery和jquery会被视为不同路径) - 确认没有拼写错误,比如文件夹名是
jquery_countdown还是jquery-countdown
- 注意文件名和文件夹名的大小写(类Unix系统下区分大小写,比如
验证
DEBUG模式是否开启
确保settings.py里DEBUG = True,因为你在urls.py里只有当DEBUG为True时,才添加了静态文件的路由配置。如果DEBUG是False,这些路由不会生效,也会导致404。可选:检查模板加载顺序
你的模板里{% extends %}在{% load static %}之前是没问题的,但要确保{% load static %}在使用{% static %}标签之前,你现在的写法是正确的。
额外提示
如果之后部署到生产环境,记得:
- 把
DEBUG设为False - 运行
python manage.py collectstatic命令,把所有静态文件收集到STATIC_ROOT目录 - 用Nginx或Apache等web服务器来提供静态文件,而不是依赖Django的静态路由
内容的提问来源于stack exchange,提问作者inquilabee
相关产品推荐
相关产品推荐

