Итоги работы
Финиш
Поздравляем — курс пройден! За вторую часть проекта сайт статей получил:
| Функция | Инструменты |
|---|---|
| Древовидные комментарии | MPTTModel, recursetree, AJAX на fetch, JsonResponse |
| Теги | django-taggit, облако тегов, похожие статьи |
| Защита от ботов | django-recaptcha |
| Визуальный редактор | django-ckeditor-5, очистка HTML через nh3 |
| Лайки и дизлайки | Модель Rating, UniqueConstraint, get_or_create |
| RSS | django.contrib.syndication |
| Производительность | Redis, cache_page, {% cache %}, cache.get_or_set |
| Статус «онлайн» | Своё middleware + кеш |
| Страницы ошибок | handler403/404/500, шаблоны в дизайне сайта |
Карта курса
- Основы веба — HTTP, HTML, SQL.
- Django — проект, маршруты, шаблоны, тесты.
- Модели и ORM — поля, связи, QuerySet, агрегаты.
- Представления и формы — CRUD-проект. 5–6. Блог — менеджеры, CBV, пагинация, почта, комментарии, теги, карта сайта, PostgreSQL, полнотекстовый поиск.
- Авторизация — регистрация, профили, OAuth, Bootstrap.
- REST API — DRF: сериализаторы, представления, фильтры, права, токены, документация.
- Деплой — VPS, Gunicorn, PostgreSQL, Nginx, SSL, обновления. 10–11. Сайт статей — большой проект с деревьями, профилями, миксинами, AJAX, кешем и middleware.
Куда двигаться дальше
- Docker и docker-compose — упаковать сайт, PostgreSQL и Redis в контейнеры.
- Celery — фоновые задачи: письма, обработка картинок, рассылки.
- Channels и WebSocket — уведомления и чаты в реальном времени.
- CI/CD — тесты и деплой автоматически при каждом push (GitHub Actions).
- Мониторинг — Sentry для ошибок, логирование, метрики.
- pytest-django и factory_boy — удобные тесты и фикстуры.
Проверьте себя
Попробуйте без подсказок добавить в сайт статей:
- закладки («Сохранить статью») с отдельной страницей в профиле;
- подписку на автора и ленту статей подписок;
- уведомления на почту о новых комментариях к вашим статьям (через сигнал);
- API для статей на DRF с токенами — по образцу модуля 8.
Каждое из этих заданий собирает вместе модели, представления, формы, права, шаблоны и тесты — всё, что вы изучили.
Практика решено 0 из 5
Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1
Расставить по порядку
Расположите этапы обработки запроса в Django по порядку:
- Запрос проходит middleware сверху вниз
- Ответ проходит middleware снизу вверх
- URL-диспетчер находит маршрут
- Представление обращается к моделям через ORM
- Шаблон рендерится с контекстом
Задание 2
Несколько вариантов
Что из этого решает проблему N+1 запросов?
Задание 3
Один вариант ответа
Какой подход безопасен для вывода HTML из визуального редактора?
Задание 4
Ввод ответа
Как называется встроенный фреймворк Django для RSS-лент? (название приложения из django.contrib)
Задание 5
Написать код
Финальное задание. Напишите ArticleDeleteView, доступный только автору: наследует
AuthorRequiredMixin, DeleteView, model = Article, success_url = reverse_lazy("home"),
шаблон blog/articles_delete.html.
Эталонное решение (ваше может отличаться):
class ArticleDeleteView(AuthorRequiredMixin, DeleteView):
model = Article
success_url = reverse_lazy("home")
template_name = "blog/articles_delete.html"
Войдите, чтобы отмечать пройденные уроки.