Django网站模板for循环渲染时变量信息无法显示求助
问题根因
你的问题核心是Django模板变量对大小写敏感,视图传递的上下文键名和模板调用的变量名不匹配。
你在views.py的render函数中传递的上下文键为大写开头的Courses,但HTML模板的for循环中使用的是小写开头的courses,模板找不到对应变量自然无法渲染数据。
解决方法(二选一即可)
方法1:修改视图的上下文键名,和模板变量保持一致
修改后的views.py代码如下:
from django.http import HttpResponse from django.shortcuts import render from .models import Course def index(request): courses = Course.objects.all() # 将大写的Courses改为小写的courses return render(request, 'index.html', {"courses": courses})
方法2:修改模板的循环变量名,和视图传递的键名保持一致
修改后的模板循环部分代码如下:
{% for course in Courses %} <tr> <td>{{course.name}}</td> <td>{{course.language}}</td> <td>{{course.cost_in_rupees}}</td> <td>{{course.year_published}}</td> </tr> {% endfor %}
修改完成后重启Django服务刷新页面即可,若仍无数据可在视图中添加print(courses),查看后台是否有输出查询到的课程数据,排查是否为数据库无对应存储数据的问题。
内容的提问来源于stack exchange,提问作者user16249843
相关产品推荐
相关产品推荐

