Комментарии

В базе данных проекта Yatube уже хранится информация об авторах и их постах. Дадим пользователям возможность комментировать записи друг друга.
Система комментирования когда-то была встроена в Django по умолчанию, но в версии 1.6 ее выделили в отдельный проект и удалили из базовой установки. Мы не будем брать ничего со стороны, а напишем всё сами.

Задание

Напишите систему комментирования записей. На странице просмотра записи под текстом поста выведите форму для отправки комментария, а ниже — список комментариев.

Модель

Добавьте модель Comment с такими полями:
  • post — ссылка на пост, к которому оставлен комментарий (для связи модели Post с комментариями используйте имя comments ).
  • author — ссылка на автора комментария (для связи модели User с комментариями используйте имя comments).
  • text — текст комментария.
  • created — автоматически подставляемые дата и время публикации комментария.
В случае, если автор комментария или пост будут удалены — все привязанные к ним комментарии должны автоматически удаляться.

Шаблон

Создайте шаблон comments.html и подключайте его на странице просмотра записи:
Скопировать кодHTML
<!-- Форма добавления комментария --> {% load user_filters %} {% if user.is_authenticated %} <div class="card my-4"> <form action="{% url 'add_comment' post.author.username post.id %}" method="post"> {% csrf_token %} <h5 class="card-header">Добавить комментарий:</h5> <div class="card-body"> <form> <div class="form-group"> {{ form.text|addclass:"form-control" }} </div> <button type="submit" class="btn btn-primary">Отправить</button> </form> </div> </form> </div> {% endif %} <!-- Комментарии --> {% for item in items %} <div class="media mb-4"> <div class="media-body"> <h5 class="mt-0"> <a href="{% url 'profile' item.author.username %}" name="comment_{{ item.id }}" >{{ item.author.username }}</a> </h5> {{ item.text }} </div> </div> {% endfor %}

Роутинг и view

Создайте path() и view-функцию для обработки отправленного комментария:
Скопировать кодPYTHON
path("<username>/<int:post_id>/comment", views.add_comment, name="add_comment"),

Подсказка

Вам надо создать модель Comment, view-функцию для обработки отправленных комментариев и форму. Для текста комментария в форме должен быть HTML-элемент <textarea>.
Измените view-функцию страницы просмотра поста: добавьте в неё вывод комментариев.