如何在一个表中显示对象在Django



我试图添加一些对象与输入字段,但他们不显示在网站上。我可以找到他们在管理页面,但不是在表中,我想要他们。我怎样才能修好它?

下面是我的代码:

models.py

class Kommentar(models.Model):
user = models.CharField(max_length=25)
comment = models.CharField(max_length=250)
def __str__(self):
return f"{self.user} {self.comment}" 

views.py

def index(request):
if 'q' in request.GET:
q = request.GET['q']
# literatur = Literatur.objects.filter(name__icontains=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()
return render(request, "literatur/index.html", {"literatur":literatur})

def commentAction(request):
user = request.POST["user"]
comment = request.POST["comment"]
print(user, comment)
Kommentar.objects.create(user=user,
comment = comment)
return HttpResponseRedirect(reverse('literatur:index'))

urls . py

app_name = "literatur"
urlpatterns = [
path('', views.index, name='index'),
path('<int:literatur_id>/', views.detail, name="detail"),
path('new', views.new, name="new"),
path('deleteAction/<int:i>/', views.deleteAction, name="deleteAction"),
path('commentAction', views.commentAction, name="commentAction"),
]

index . html

<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}}</a></td>
<td>{{i.comment}}</td>
</tr>
{% endfor %}
</table>

在索引视图函数中,您对文献进行查询,并将其传递给渲染函数以呈现html模板。但是index.html不关心文献。

对Kommentar进行查询,并将查询集传递给render函数

def index(request):
… # Your view logic
kommentar = Kommentar.objects.all()
return render(request, ‘literatur/index.html’, {‘literatur’: literatur, ‘kommentur’: kommentur})

公立小学
  1. 在index.html模板中没有使用文献查询集。您可能想要删除视图逻辑的这一部分,或者修改index.html以使用查询集;
  2. 你可能想在你的url .py
  3. 中的' new '和' commentAction ' url路径后面加上斜杠

最新更新