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>
额外优化建议
- 循环变量改用小写命名(如
userdb),符合Python命名规范,避免与模型类名混淆。 - 检查Userdb模型的主键字段:如果使用Django默认的
id作为主键,需将userdb.ticketid改为userdb.id。 - 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
相关产品推荐
相关产品推荐

