Итоги работы

⏱ 15 мин · 🧩 заданий: 6

Что мы сделали

За первую часть проекта блог уже работает:

  1. Проект и приложение. mysite + blog, приложение подключено через BlogConfig, язык — русский.
  2. Модель Post. Заголовок, слаг, автор через AUTH_USER_MODEL, текст, даты publish/created/updated, статус на TextChoices, сортировка и индекс в Meta.
  3. Админка. PostAdmin с колонками, фильтрами, поиском, автозаполнением слага, raw_id_fields и иерархией дат.
  4. Менеджер. Post.published возвращает только опубликованные посты.
  5. Представления. post_list и post_detail (404 для черновиков и несуществующих постов).
  6. Маршруты. Пространство имён blog, get_absolute_url() у модели.
  7. Шаблоны. Наследование от blog/base.html, фильтры truncatewords, linebreaks, date, статика.

Карта проекта

mysite/urls.py ──include──▶ blog/urls.py
                               ├── ""          → views.post_list   → post/list.html
                               └── "<int:id>/" → views.post_detail → post/detail.html
                                                      │
                                                 Post.published (PublishedManager)
                                                      │
                                                  blog_post (БД)

Чек-лист самопроверки

  • [ ] Понимаю, зачем ссылаться на пользователя через settings.AUTH_USER_MODEL.
  • [ ] Знаю разницу между auto_now, auto_now_add и default=timezone.now.
  • [ ] Могу объяснить, почему при своём менеджере надо явно объявить objects.
  • [ ] Понимаю, почему post_detail ищет только среди опубликованных.
  • [ ] Умею наследовать шаблоны и пользоваться фильтрами.

Что дальше

Во второй части блога сделаем его «настоящим»:

  • красивые адреса с датой и слагом;
  • постраничную навигацию;
  • представления-классы;
  • отправку поста по email;
  • комментарии, теги и похожие посты;
  • свои шаблонные теги, карту сайта;
  • PostgreSQL и полнотекстовый поиск.

Если что-то из чек-листа вызывает сомнения — вернитесь к соответствующему уроку, а затем закрепите знания заданиями ниже.

Практика решено 0 из 6

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Расставить по порядку

Восстановите порядок работы над первой частью блога.

  1. Сверстали шаблоны base.html, list.html, detail.html
  2. Зарегистрировали модель в админке и настроили PostAdmin
  3. Написали менеджер PublishedManager
  4. Создали представления post_list и post_detail и маршруты
  5. Описали модель Post и применили миграции
  6. Создали проект mysite и приложение blog
Задание 2 Один вариант ответа

Какой код вернёт только опубликованные посты 2026 года?

Задание 3 Несколько вариантов

Что произойдёт, если удалить пользователя-автора, у которого есть посты (on_delete=models.CASCADE)?

Задание 4 Написать код

Контрольное задание. Напишите метод get_absolute_url модели Post, который возвращает адрес маршрута blog:post_detail с аргументом self.id.

Задание 5 Ввод ответа

Какой командой посмотреть SQL, который выполнит миграция 0001 приложения blog?

Задание 6 Практика (выполнить у себя)

Добавьте через админку 5 постов (3 опубликованных и 2 черновика) и убедитесь, что на сайте видны только опубликованные. Нажмите, когда проверите.

Войдите, чтобы отмечать пройденные уроки.