Итоги работы

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

Что добавили во второй части

Возможность Ключевые инструменты
SEO-адреса маршрут год/месяц/день/слаг, unique_for_date, get_absolute_url
Пагинация Paginator, get_page, фрагмент pagination.html
Представления-классы View, TemplateView, ListView, page_obj
Поделиться по email forms.Form, send_mail, build_absolute_uri, SMTP
Комментарии модель Comment, ModelForm, save(commit=False), @require_POST
Теги django-taggit, TaggableManager, фильтр по тегу
Похожие посты values_list, annotate(Count), сортировка
Свои теги и фильтры simple_tag, inclusion_tag, @register.filter, Markdown
Карта сайта и RSS sitemaps, sites, Feed
PostgreSQL psycopg, dumpdata/loaddata
Поиск SearchVector, SearchQuery, SearchRank, TrigramSimilarity

Структура проекта

mysite/
├── settings.py        sites, sitemaps, postgres, taggit, EMAIL_*, DATABASES
└── urls.py            blog/, sitemap.xml, admin/
blog/
├── models.py          Post (+ PublishedManager, tags), Comment
├── admin.py           PostAdmin, CommentAdmin
├── forms.py           EmailPostForm, CommentForm, SearchForm
├── views.py           post_list, post_detail, post_share, post_comment, post_search
├── urls.py            app_name = "blog"
├── feeds.py           LatestPostsFeed
├── sitemaps.py        PostSitemap
├── templatetags/
│   └── blog_tags.py   total_posts, show_latest_posts, get_most_commented_posts, markdown
└── templates/blog/
    ├── base.html
    └── post/  list, detail, share, comment, search, latest_posts, includes/comment_form

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

  • Понимаю, зачем get_absolute_url, и как с ним поменять адреса без правки шаблонов.
  • Умею добавить пагинацию в функцию и в ListView.
  • Знаю, когда использовать save(commit=False).
  • Могу объяснить, почему Count("tags") после filter(tags__in=...) считает общие теги.
  • Понимаю разницу между simple_tag и inclusion_tag.
  • Знаю, зачем config="russian" в полнотекстовом поиске.

Что дальше

Блог пока анонимный: комментарии оставляют по имени и email, посты пишет только админ. В следующем модуле добавим пользователей: регистрацию, вход, восстановление пароля, профили, вход через соцсети и красивый дизайн на Bootstrap 5.

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

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

Какой инструмент выбрать, чтобы показать «последние посты» в боковой панели на всех страницах блога?

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

Какие функции блога работают только с PostgreSQL?

Задание 3 Расставить по порядку

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

  1. SEO-адреса с датой и слагом
  2. Карта сайта
  3. Отправка поста по email
  4. PostgreSQL и полнотекстовый поиск
  5. Свои шаблонные теги и фильтры
  6. Пагинация
  7. Теги и похожие посты
  8. Комментарии
Задание 4 Написать код

Контрольное задание: view post_list с тегами и пагинацией. Напишите тело функции: опубликованные посты; если передан tag_slug — фильтр по тегу; пагинация по 3; рендер blog/post/list.html с posts и tag.

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

Убедитесь, что в вашем блоге работают: пагинация, комментарии, теги, похожие посты, боковая панель, sitemap.xml, RSS и поиск. Нажмите, когда всё проверите.

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