Задание
Напишите систему комментирования записей. На странице просмотра записи под текстом поста выведите форму для отправки комментария, а ниже — список комментариев.
Модель
Добавьте модель 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-функцию страницы просмотра поста: добавьте в неё вывод комментариев.