Шаблон Django не отображает ничего
У меня есть форма TextField (текстовая область) на моей странице, где пользователи могут отправлять комментарии и отображать их.
Я оставил несколько комментариев, но ни один из них не отображается. Я вижу, что каждый раз, когда я добавляю один, пространство, где должны быть комментарии, увеличивается, после осмотра страницы с помощью инструментов разработчика, там просто куча пустых HTML тегов для всех комментариев, которые я оставил, не могу понять, в чем дело
models.py:
class Comments(models.Model):
comment = models.TextField(max_length=250)
user_commented = models.CharField(max_length=64)
list_title = models.CharField(max_length=64)
list_author = models.CharField(max_length=64)
date_time = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return f"{self.user_commented}, {self.date_time}, {self.comment}"
forms.py
class CommentForm(ModelForm):
class Meta:
model = Comments
fields = ['comment']
views.py
commentform = CommentForm()
comment = CommentForm(request.POST)
if "comment" in request.POST:
if comment.is_valid:
comment_data = Comments.objects.create(list_title=title, user_commented=username, list_author=author, comment=comment)
comment_data.save()
comment_data = list(Comments.objects.all().filter(list_title=title))
return render(request, "auctions/listing.html", {
"form": form,
"listing": listing_object,
"checkbox": checkbox,
"commentform": commentform,
"max_bid": max_bid,
"comments": comment_data
})
шаблон
<form action="{% url 'listing' listing.title %}" method="POST">
{% csrf_token %}
{{ commentform }}
<input type="submit" value="Comment" name="comment">
</form>
<div class="comment">
<h5>Comments</h5>
{% for comment in comments %}
<p>{{ comments.user_commented }}</p><span>{{ comments.date_time }}</span>
<p>{{ comments.comment }}</p>
<br>
{% endfor %}
</div>
GET запрос: Я собрал все комментарии из базы данных в переменную, прежде чем передать ее в GET-запрос, следующим образом
comment_data = list(Comments.objects.all().filter(list_title=title))
return render(request, "auctions/listing.html", {
"form": form,
"listing": listing_object,
"checkbox": checkbox,
"commentform": commentform,
"max_bid": max_bid,
"users": author,
"comments": comment_data
})
Вы поступили неправильно:
{% for comment in comments %}
<p>{{ comment.user_commented }}</p><span>{{ comment.date_time }}</span>
<p>{{ comment.comment }}</p> #You had added comments here instead of comment
<br>
{% endfor %}
Согласно циклу for, вы добавили комментарии вместо комментария.