Django项目static静态文件访问时而404时而自动下载问题排查
Django静态文件访问异常解决方案
该问题为配置错误导致,和虚拟环境安装无关,按如下步骤修改即可:
- 修正settings.py静态文件配置
你当前的STATIC_ROOT配置存在语法错误:os.path.join(BASE_DIR, '/static/')中第二个参数以/开头会被识别为系统绝对路径,直接忽略前面的BASE_DIR参数,导致Django无法正确定位到项目内的static文件夹。
同时DEBUG开发模式下,Django优先从STATICFILES_DIRS配置的路径查找静态文件,你当前没有配置该参数。
修改为如下配置:
# 新增配置:指定开发阶段静态文件的查找目录,对应项目根目录下的static文件夹 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # STATIC_ROOT为生产环境执行collectstatic命令的导出目录,不要和开发用的static目录重名 STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATIC_URL = '/static/' MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
修正urls.py冗余导入
你重复导入了static模块,可删除第一行from django.conf.urls import static,保留第二行的from django.conf.urls.static import static即可,该问题不影响功能但不符合规范。检查静态文件路径
确认项目根目录下的static文件夹内存在css/bootstrap.css文件,注意路径大小写匹配,Linux/macOS系统对文件名大小写敏感。
异常现象说明
出现404是因为Django无法根据错误配置找到对应的静态资源;点击链接触发下载是因为错误响应的HTTP头Content-Type不是text/css,浏览器识别为可下载文件,均为配置问题。
内容的提问来源于stack exchange,提问作者yumlusoft
相关产品推荐
相关产品推荐

