使用Django CBV开发时无法渲染显示Model对象问题求助
问题核心原因
是上下文变量名拼写不匹配导致的:你在视图中传递给模板的变量键名为qoutes,但模板循环时引用的变量是quotes,二者拼写不一致,模板无法拿到对应数据,因此循环逻辑直接不执行,对应渲染区域为空。
修复方案
直接修正二者的变量名保持一致即可,推荐修正视图中的上下文键名,符合quotes的正确拼写:
class home(View): def get(self, request): quote = Quote.objects.all() # 把原键名qoutes改为quotes,和模板引用匹配 return render(request, 'home.html', {'quotes':quote})
你也可以选择修改模板中的循环语句为{% for Quote in qoutes %},只要保证视图传参和模板引用的变量名完全对应即可。
补充排查项(修正拼写后仍不展示可检查)
- 进入Django Shell执行
Quote.objects.all(),确认数据库中确实存在Quote表的有效记录 - 确认路由配置指向的是当前这个
home类视图,你访问的页面确实由该视图渲染 - 确认Django模板路径配置正确,视图加载的
home.html就是你修改的这个模板文件
内容的提问来源于stack exchange,提问作者Shreyash mishra
相关产品推荐
相关产品推荐

