You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django从数据表查询数据无返回内容且不报错的原因是什么?

问题原因

  • 核心错误是视图传递的上下文变量名与模板中引用的变量名不匹配
    你在视图函数中定义的上下文参数是{'staff': staffs},也就是传给模板的列表变量名为staff,但模板中循环遍历的是不存在的staffs变量,Django模板默认对未定义的变量会直接渲染为空,所以没有结果也不会报错。
  • 次要可优化问题:模型类中主键字段定义写法不规范,id = models.AutoField缺少括号和primary_key=True参数,正确写法为id = models.AutoField(primary_key=True)(如果不手动定义主键Django也会自动生成该字段,该问题不直接导致无数据)

解决方法

  1. 修正视图中的上下文参数键名,和模板引用保持一致:
def user(request):
    staffs = staff.objects.all()
    # 把键名改为staffs,和模板遍历的变量名对应
    params = {'staffs': staffs}
    return render(request, "salary/user.html", params)

也可以修改模板中的遍历代码为{% for staff in staff %},只要两边变量名一致即可。
2. 修正后如果仍无数据,可以在视图中添加打印语句校验数据是否存在:

def user(request):
    staffs = staff.objects.all()
    # 后台打印查询结果,确认数据库中是否有数据
    print(staffs)
    params = {'staffs': staffs}
    return render(request, "salary/user.html", params)

如果后台打印结果为空<QuerySet []>,说明staff表中还没有录入任何数据,先创建测试数据即可。

内容的提问来源于stack exchange,提问作者Path Parakh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:39:05