Как показать объекты в таблице в 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>
Внутри функции index view вы делаете запрос к литературе и передаете его в функцию render для рендеринга html-шаблона. Однако index.html не заботится о литературе.
Составьте запрос к Kommentar и передайте queryset в функцию render
def index(request):
… # Your view logic
kommentar = Kommentar.objects.all()
return render(request, ‘literatur/index.html’, {‘literatur’: literatur, ‘kommentur’: kommentur})
P.S.
- Кверисет literatur не используется в шаблоне index.html. Вы можете просто удалить эту часть логики представления или изменить index.html, чтобы использовать кверисет; .
- Вы можете добавить косую черту к url-путям 'new' и 'commentAction' в вашем urls.py .
Вы уверены, что это правильный index.html? Нет смысла передавать туда литературу, поскольку ваш шаблон соответствует цели отображения комментариев пользователей.
В любом случае... вы забыли передать список "Kommentar"-Items в ваш индекс.