为何我的Django应用无论修改任何文件都加载其他应用的CSS?
解决Django多应用静态资源冲突问题
先排查模板继承是否出错
- 检查
tickets应用下所有模板的继承语句,必须明确指定继承tickets自身的base.html,不能误写为login/base.html。正确写法示例:{% extends "tickets/base.html" %} - 确认
tickets/base.html中引入CSS的路径是否精准,要指定应用专属的静态文件路径:{% load static %} <link rel="stylesheet" href="{% static 'tickets/style.css' %}">
规范静态文件目录结构
- 每个应用的静态文件必须放在
[应用名]/static/[应用名]/目录下,比如tickets的CSS应该放在tickets/static/tickets/style.css。如果直接放在tickets/static/style.css,Django会按INSTALLED_APPS的顺序查找,先找到login应用下的同名文件就会优先加载。 - 默认的
STATIC_URL = 'static/'无需修改,只要INSTALLED_APPS中包含login、tickets和django.contrib.staticfiles(默认已启用)即可。 - 不要把应用内的静态目录加到
STATICFILES_DIRS中,这个配置是用来存放项目级公共静态文件的,应用内的静态文件Django会自动扫描识别。
清理缓存确保生效
- 除了浏览器硬刷新(Ctrl+F5),开发环境下可以重启Django服务器;如果是生产环境,必须重新执行
python manage.py collectstatic,将所有静态文件收集到STATIC_ROOT目录。
内容的提问来源于stack exchange,提问作者l schomaker
相关产品推荐
相关产品推荐

