При запуске сайта комментарии добавляются и выводятся под постами только через админ панель, при попытке добавить комментарии через форму на сайте вылетает
ошибка 405. Как сделать так что бы при добавлении комментария через форму комментарий добавлялся и я оставался на этой же странице по пути
localhost/posts/айди поста/?
PS. Скорее всего это из-за одинаковых маршрутов в файле
urls.py, я не понимаю как это исправить...
файл приложения
models.py
class Post(models.Model):
title = models.CharField('Заголовок записи', max_length=50)
description = models.TextField('Текст записи', max_length=5000)
date_add = models.DateTimeField('Дата публикации', auto_now=True)
def __str__(self):
return f'{self.date_add} / {self.title}'
class Comments(models.Model):
name = models.CharField('Имя', max_length=16)
text_comments = models.TextField('Текст комментария', max_length=200)
post = models.ForeignKey(Post, verbose_name='Публикация', on_delete=models.CASCADE)
def __str__(self):
return f'{self.name} / {self.post}'
Файл приложения
views.py
class Home(View):
def get(self, request):
post_title = Post.objects.all()
return render(request, 'forum/home.html', {'post_title': post_title}) # Функция возвращающая HTML страницу
class Blog(View):
def get(self, request):
post = Post.objects.all()
print(post)
return render(request, 'forum/blog.html', {'post': post})
class PostDetail(View):
def get(self, request, post_id):
post = Post.objects.get(id=post_id)
return render(request, 'forum/post_detail.html', {'post': post})
class AddComments(View):
def post(self, request, post_id):
form = CommentsForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.post_id = post_id
form.save()
return redirect(f'posts/{post_id}')
Файл приложения
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.Home.as_view(), name='home'), # Главная страница
path('posts', views.Blog.as_view(), name='posts'), # Страница блога
path('posts/<int:post_id>/', views.PostDetail.as_view(), name='post_detail'), # Страница поста
path('posts/<int:post_id>/', views.AddComments.as_view(), name='add_comments'),
path('help', views.Help.as_view(), name='help'), # Страница помощи
]
файл
post_detail.html
<div>
<form action="{% url 'add_comments' post.id %}" method="post">
<h3></h3>
{% csrf_token %}
<div>
<textarea name="text_comments" placeholder="Ваш комментарий..."></textarea>
</div>
<div>
<input type="text" name="name" placeholder="Ваше имя *">
</div>
<div><input type="submit"></div>
</form>
</div>
<div>
{% for comment in post.comments_set.all reversed %}
<div class="view-comment">
<h4>{{ comment.name }}</h4>
<p>{{ comment.text_comments }}</p>
</div>
{% endfor %}
</div>