Запрос Comment POST работает, но комментарии не отображаются под постом
Я относительно новичок во всем этом. Я нахожусь в процессе создания страницы социальной сети с помощью django/python. Возможность создать пост в ленте новостей (т.е. список постов) и возможность нажать на один пост, чтобы увидеть более подробный вид, работает правильно. Когда пользователь нажимает на одно сообщение, чтобы увидеть его более подробно, у него также есть возможность добавить комментарий.Вот в чем проблема: поле ввода "создать комментарий" работает нормально, как и кнопка "опубликовать комментарий", но когда вы нажимаете на кнопку "опубликовать комментарий", мой терминал показывает, что комментарий опубликован, но список комментариев так и не появляется.
Что появляется в моем Powershell/Terminal, когда я нажимаю кнопку 'post comment':
[DD/MONTH/2022 HH:MM:SS] "POST /social/post/5 HTTP/1.1" 200 3995
скриншот того, что отображается на моем сайте
в моем settings.py установлены приложения:
INSTALLED_APPS = [
'social',
'landing',
'crispy_forms',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'crispy_bootstrap5',
'allauth.socialaccount.providers.instagram',
'allauth.socialaccount.providers.linkedin',
'allauth.socialaccount.providers.facebook',
]
my views.py:
from django.shortcuts import render
from django.urls import reverse_lazy
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin
from django.views import View
from django.views.generic.edit import UpdateView, DeleteView
from .models import Post, Comment
from .forms import PostForm, CommentForm
class PostListView(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
posts = Post.objects.all().order_by('-created_on')
form = PostForm()
context = {
'post_list': posts,
'form': form,
}
return render(request, 'social/post_list.html', context)
def post(self, request, *args, **kwargs):
posts = Post.objects.all().order_by('-created_on')
form = PostForm(request.POST)
if form.is_valid():
new_post = form.save(commit=False)
new_post.author = request.user
new_post.save()
context = {
'post_list': posts,
'form': form,
}
return render(request, 'social/post_list.html', context)
class PostDetailView(LoginRequiredMixin, View):
def get(self, request, pk, *args, **kwargs):
post = Post.objects.get(pk=pk)
form = CommentForm()
comments = Comment.objects.filter(post=post).order_by('-created_on')
context = {
'post': post,
'form': form,
'comments': comments,
}
return render(request, 'social/post_detail.html', context)
def post(self, request, pk, *args, **kwargs):
post = Post.objects.get(pk=pk)
form = CommentForm(request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.author = request.user
new_comment_post = post
new_comment.save()
comments = Comment.objects.filter(post=post).order_by('-created_on')
context = {
'post': post,
'form': form,
'comments': comments,
}
return render(request, 'social/post_detail.html', context)
my models.py:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
body = models.TextField()
created_on = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
class Comment(models.Model):
comment = models.TextField()
created_on = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey('Post', on_delete=models.CASCADE, null=True)
my forms.py:
from django import forms
from .models import Post, Comment
class PostForm(forms.ModelForm):
body = forms.CharField(
label='',
widget=forms.Textarea(
attrs={'rows': '3',
'placeholder': 'Share your ideas...'}
))
class Meta:
model = Post
fields = ['body']
class CommentForm(forms.ModelForm):
comment = forms.CharField(
label='',
widget=forms.Textarea(
attrs={'rows': '3',
'placeholder': 'Share your opinion...'}
))
class Meta:
model = Comment
fields = ['comment']
собственно html-шаблон, на котором находится функция комментария:
post_detail.html:
{% extends 'landing/base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<div class="row mt-5">
<div class="col-md-5 col-sm-6">
<a href="{% url 'post-list' %}" class="btn btn-light">Back To Feed</a>
</div>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-5 col-sm-12 border-bottom">
<p>
<strong>{{ post.author }}</strong> {{ post.created_on }}
{% if request.user == post.author %}
<a href="{% url 'post-edit' post.pk %}" style="color: #333;"><i class="far fa-edit"></i></a>
<a href="{% url 'post-delete' post.pk %}" style="color: #333;"><i class="fas fa-trash"></i></a>
{% endif %}
</p>
<p>{{ post.body }}</p>
</div>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-5 col-sm-12">
<h5>Add a Comment!</h5>
</div>
</div>
<div class="row justify-content-center mt-3 mb-5">
<div class="col-md-5 col-sm-12">
<form method="POST">
{% csrf_token %}
{{ form | crispy }}
<div class="d-grid gap-2">
<button class="btn btn-light" style="background-color: #CC64C3; mt-3 mb-5">Post</button>
</div>
</form>
</div>
</div>
{% for comment in comment %}
<div class="row justify-content-center mt-3 mb-5 border-bottom">
<div class="col-md-5 col-sm-12">
<p>
<strong>{{ comment.author }}</strong> {{ comment.created_on }}
{% if request.user == comment.author %}
<a href="{% url 'comment-delete' post.pk comment.pk %}" style="color: #333;"><i class="fas fa-trash"></i></a>
{% endif %}
</p>
<p>{{ comment.comment }}</p>
</div>
</div>
{% endfor %}
</div>
{% endblock content %}
Любая помощь будет очень признательна, так как я застрял на этом уже больше недели :)