4 спринт финальный проект

Задание 1: страница для публикации постов

У зарегистрированных пользователей Yatube всё ещё нет возможности самостоятельно публиковать посты. Пора сделать форму для публикации новых записей.

  1. Добавьте в шапку сайта ссылку «Новая запись», она должна быть видна только авторизованным пользователям и вести на страницу /create/
  2. На странице /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 %} сломается: ведь она ждёт аргумент. При попытке отрендерить шаблон с таким кодом возникнет ошибка:
    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> 





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: