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

Django中提交的模型对象后台可见但前端表格不显示如何解决

问题根因
  • 渲染首页的index视图未查询Kommentar评论表数据,仅向模板传递了文献列表literatur,模板无法获取评论数据源。
  • 模板中遍历评论使用的变量为kommentar,视图未传递该变量时Django模板会默认将其解析为空值,因此表格无内容渲染。
  • 模板用户名单元格存在多余的</a>闭合标签,属于无效HTML,不影响核心数据加载但会导致页面结构异常。
修复方案

1. 修改视图层,补充评论数据查询与传递

打开views.py,修改index函数,新增评论查询逻辑,将评论数据集加入模板上下文:

def index(request):
    if 'q' in request.GET:
        q = request.GET['q']
        multiple_q = Q(Q(name__icontains=q) | Q(autor__icontains=q) | Q(jahr__icontains=q) | Q(auflage__icontains=q) | Q(verlag__icontains=q) | Q(ort__icontains=q) | Q(isbn__icontains=q))
        literatur = Literatur.objects.filter(multiple_q)
    else:
        literatur = Literatur.objects.all()
    # 查询全部评论数据
    kommentar = Kommentar.objects.all()
    # 将评论数据传入模板上下文
    return render(request, "literatur/index.html", {"literatur": literatur, "kommentar": kommentar})

2. 修复模板层无效标签

打开index.html,删除用户名单元格多余的</a>标签,修正后的表格代码如下:

<table class="table">
  <thead class="thead-dark"> 
  <tr><th scope="col">Username</th><th scope="col">Kommentar</th></tr>
  {% for i in kommentar %}
  <tr>
  <td>{{i.user}}</td>
  <td>{{i.comment}}</td>
  </tr>
  {% endfor %}
</table>

可选优化(按提交时间排序评论)

如果需要最新提交的评论展示在最前面,可以给Kommentar模型新增自动记录创建时间的字段:

class Kommentar(models.Model):
    user = models.CharField(max_length=25)
    comment = models.CharField(max_length=250)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.user} {self.comment}" 

修改模型后依次执行以下命令同步数据库结构:
python manage.py makemigrations
python manage.py migrate

再将视图中查询评论的代码调整为按创建时间倒序:
kommentar = Kommentar.objects.all().order_by('-created_at')

修改完成后重启Django服务,刷新首页即可正常看到提交的评论内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:27:33