如何在Django模板中展示数据库数据?我的代码无数据输出
Django模板无法获取视图传递的Student数据排查
问题场景
我正在学习Django,student应用的views.py、models.py以及模板index.html代码如下,但浏览器中看不到任何数据:
views.py 代码
from django.shortcuts import render # from .models import Student from student.models import Student # Create your views here. def home(request): student_data = Student.objects.all() context = { 'student_data': student_data } return render(request, 'index.html', context )
models.py 代码
from django.db import models class Student(models.Model): first_name=models.CharField( max_length=100 ) last_name=models.CharField( max_length=100, blank=True, null=True ) age=models.IntegerField()
index.html 模板代码
<p> {{ student_data }} </p>
排查与解决步骤
确认数据库存在Student数据
进入Django Shell执行python manage.py shell,输入以下命令验证:from student.models import Student print(Student.objects.all())如果输出为空列表
[],说明数据库无数据,先创建测试数据:Student.objects.create(first_name="张三", age=20)完成后刷新浏览器查看。
修正模板渲染逻辑
student_data是QuerySet对象,直接输出只会显示对象的字符串标识,建议遍历数据并添加空数据提示:<p> {% for student in student_data %} <div>{{ student.first_name }} - {{ student.age }}</div> {% empty %} <div>暂无学生数据</div> {% endfor %} </p>验证视图上下文传递
在视图中添加打印语句,确认student_data是否有效:def home(request): student_data = Student.objects.all() print(student_data) # 查看控制台输出 context = { 'student_data': student_data } return render(request, 'index.html', context )运行项目时查看控制台,若输出有数据,问题在模板;若为空,检查模型导入或数据库数据。
检查应用与模板配置
确保student应用已添加到项目settings.py的INSTALLED_APPS:INSTALLED_APPS = [ ... 'student', ]同时确认模板路径配置正确:项目
settings.py的TEMPLATES中DIRS包含模板文件夹,或student应用下存在templates/student子目录(Django会自动扫描应用内的templates目录)。
内容的提问来源于stack exchange,提问作者abu abu
相关产品推荐
相关产品推荐

