Django更新页面传入主键参数时CSS加载异常,其余页面运行正常
问题根因
你遇到的样式加载异常是因为base.html中所有静态资源使用了相对路径../static/引用:
- 不带pk参数时,页面路由大概率是
/update_lead/,相对路径../static/会解析为域名根目录下的/static/,路径正确可正常加载资源 - 带pk参数时,页面路由变成
/update_lead/[id值]/,相对路径../static/会解析为/update_lead/static/,该路径不存在,所以静态资源全部404,页面无样式
解决步骤
- 先确认项目
settings.py中已经配置了正确的静态资源路径,通常默认配置即可:
STATIC_URL = '/static/' # 开发环境如果有额外静态文件目录可补充配置 STATICFILES_DIRS = [BASE_DIR / 'static']
- 修改base.html模板:
首先在模板最顶部加载Django静态资源标签:
将所有静态资源的相对路径引用,全部替换为Django提供的{% load static %}static模板标签写法,示例:
原错误写法:
替换后正确写法:<link href="../static/elegant/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css"> <script src="../static/elegant/vendor/jquery/jquery.min.js"></script>
所有CSS、JS资源的引用都按上述规则替换即可。<link href="{% static 'elegant/vendor/fontawesome-free/css/all.min.css' %}" rel="stylesheet" type="text/css"> <script src="{% static 'elegant/vendor/jquery/jquery.min.js' %}"></script>
额外代码优化提醒
你的视图代码中查询集调用漏了括号,会导致后续遍历数据出错:
# 错误写法 followup = Followup.objects.all agent = Agent.objects.all source = Source.objects.all # 正确写法 followup = Followup.objects.all() agent = Agent.objects.all() source = Source.objects.all()
内容的提问来源于stack exchange,提问作者sarangkkl
相关产品推荐
相关产品推荐

