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

Django中Ticket数据无法在HTML页面渲染问题求助

Django Ticket数据无法渲染问题修复

问题描述

Django项目中,用户数据库内容能正常显示,但Ticket对应的Userdb表数据仅在页面预留了显示空间,却没有填充内容。

相关代码

views.py

# 主页视图
def dashboard(request):
    ticket = Userdb.objects.filter(userid = request.user.id)
    context = {'ticket': ticket}
    return render(request,'dashboard/home.html', context)

# 提交Ticket视图
def ticketr(request):
    data = {}
    if request.method == 'POST':
        if request.POST.get('nomctt') and request.POST.get('tiposerv') and request.POST.get('areaserv') and request.POST.get('tickettext'):
            table = Userdb()
            table.nomctt = request.POST.get('nomctt')
            table.numctt = request.POST.get('numctt')
            table.tiposerv = request.POST.get('tiposerv')
            table.areaserv = request.POST.get('areaserv')
            table.tickettext = request.POST.get('tickettext')
            table.userid = request.user
            table.save()
            data['msg'] = 'Ticket registrado!'
            data['class'] = 'alert-success'    
            return render(request,'dashboard/home.html', data)
        else:
         data['msg'] = 'Preencha todos os campos!'
         data['class'] = 'alert-danger'
        return render(request,'dashboard/ticket.html',data)

home.html(关键问题部分)

<tbody>
    {% for Userdb in ticket %}
    <tr class="active">
        <th scope="row">{{ticket.ticketid}}</th>
        <td>{{ticket.nomctt}}</td>
        <td>{{ticket.numctt}}</td>
        <td>{{ticket.tickettext}}</td>
    </tr>
    {% endfor %}
</tbody>

错误原因

模板循环逻辑出错:在{% for Userdb in ticket %}循环中,错误地使用集合对象ticket(QuerySet)访问字段,而非循环变量Userdb(单个Userdb实例)。QuerySet对象本身没有ticketid这类实例属性,因此无法渲染出具体数据,仅能生成空的表格行。

修复方案

修改home.html中的循环代码,将所有ticket.xxx替换为循环变量Userdb.xxx:

<tbody>
    {% for userdb in ticket %}
    <tr class="active">
        <th scope="row">{{ userdb.ticketid }}</th>
        <td>{{ userdb.nomctt }}</td>
        <td>{{ userdb.numctt }}</td>
        <td>{{ userdb.tickettext }}</td>
    </tr>
    {% endfor %}
</tbody>

额外优化建议

  1. 循环变量改用小写命名(如userdb),符合Python命名规范,避免与模型类名混淆。
  2. 检查Userdb模型的主键字段:如果使用Django默认的id作为主键,需将userdb.ticketid改为userdb.id。
  3. dashboard视图中,QuerySet变量名建议改为tickets(复数形式),语义更清晰:
def dashboard(request):
    tickets = Userdb.objects.filter(userid = request.user.id)
    context = {'tickets': tickets}
    return render(request,'dashboard/home.html', context)

对应模板循环改为{% for userdb in tickets %}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:17:42