如何在Django项目中连接CSS/JS文件?遇404错误求助
从你给出的findstatic命令输出能直接定位问题,按以下步骤逐一修正:
1. 修正STATICFILES_DIRS配置
你之前的配置要么指向了不存在的目录(BASE_DIR/static),要么重复添加了app的静态目录,导致Django重复查找资源。Django会自动扫描INSTALLED_APPS中每个app下的static目录,完全不需要把app的static目录手动加到STATICFILES_DIRS里。
把settings中的静态文件配置改成这样:
STATIC_URL = 'static/' # 如果你没有项目级别的公共static目录,直接注释/删除STATICFILES_DIRS即可 # STATICFILES_DIRS = []
2. 确保DEBUG模式处于开启状态
开发环境下,Django只有在DEBUG = True时,才会通过runserver自动提供静态文件的访问服务。检查settings.py里的DEBUG设置:
DEBUG = True
3. 开发环境无需额外修改urls.py
你当前的urls.py只配置了media的静态映射,这没问题。开发环境下只要DEBUG=True且INSTALLED_APPS包含django.contrib.staticfiles,runserver会自动处理static文件的请求,不需要额外添加static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)。
4. 确认静态文件引用路径正确性
你模板里的引用路径是完全正确的:
{% static 'car_manage/js/jquery-1.10.2.min.js' %}
因为你的文件实际存储路径是car_manage/static/car_manage/js/jquery-1.10.2.min.js,Django会把app下的static目录作为静态资源的搜索根,里面的car_manage子目录是用来避免资源名冲突的命名空间,引用逻辑没问题。
最后验证
执行python manage.py findstatic car_manage/js/jquery-1.10.2.min.js,应该只返回一条正确的文件路径且无警告。随后重启runserver,刷新页面即可正常加载静态资源。
另外你提到去掉CSS的rel="stylesheet"就不报错,这只是浏览器不再发起该CSS文件的请求而已,并非真正解决问题,按上述步骤修正后即可正常保留该参数。
内容的提问来源于stack exchange,提问作者pshpth_ sht

