Задание 1: страница для публикации постов
У зарегистрированных пользователей Yatube всё ещё нет возможности самостоятельно публиковать посты. Пора сделать форму для публикации новых записей.
- Добавьте в шапку сайта ссылку «Новая запись», она должна быть видна только авторизованным пользователям и вести на страницу
/create/ - На странице
/create/создайте форму для добавления новой публикации- view-функция для страницы
/create/должна называтьсяpost_create(); nameдляpath()страницы/create/должен бытьpost_create;- в контекст шаблона страницы
/create/должна передаваться переменнаяform. Она должна содержать объектPostForm, в котором будут два поля:text(обязательное для заполнения поле);group(необязательное для заполнения);
- после валидации формы и создания нового поста автор должен быть перенаправлен на страницу своего профайла /profile/<username>/.
Дизайн должен соответствовать шаблону posts/create_post.html. Архив с шаблонами приложен в конце задания.Обратите внимание, что полеgroup— необязательное: пост можно создать и без указания группы. И ссылка вида{% url 'posts:group_list' post.group.slug %}сломается: ведь она ждёт аргумент. При попытке отрендерить шаблон с таким кодом возникнет ошибка:
- view-функция для страницы
NoReverseMatch at /
Reverse for 'group_list' with arguments '('',)' not found.
1 pattern(s) tried: ['group/(?P<slug>[-a-zA-Z0-9_]+)/$']
Чтобы избежать этого, нужно добавить в шаблоны проверку на то, есть ли у поста свойство group. Вот как она может выглядеть:
{% if post.group %}
<a href="{% url 'posts:group_list' post.group.slug %}">все записи группы</a>
{% endif %}
Задание 2: страница редактирования постов
Добавьте страницу редактирования записи с адресом /posts/<post_id>/edit/. View-функцию для этой страницы назовите post_edit().
Права на редактирование должны быть только у автора этого поста. Остальные пользователи должны перенаправляться на страницу просмотра поста.При генерации страницы передайте в контекст переменную form, в ней должно быть два поля: text и group.
Для страницы редактирования поста должен применяться тот же HTML-шаблон, что и для страницы создания нового поста: posts/create_post.html.Шаблон потребуется немного усложнить:
- при редактировании поста заголовок «Добавить запись» должен заменяться на «Редактировать запись»;
- надпись на кнопке отправки формы тоже должна зависеть от операции: «Добавить» для новой записи и «Сохранить» — для редактирования.
Для этого из view-функции post_edit() передавайте в шаблон posts/create_post.html дополнительную переменную контекста is_edit; проверяйте эту переменную и изменяйте вид элементов в зависимости от результатов проверки.
<button type="submit" class="btn btn-primary">
{% if is_edit %}
Сохранить
{% else %}
Добавить
{% endif %}
</button>