Веб-разработка

Учебник Django для начинающих

37 уроков · 10 разделов · бесплатно, без регистрации

Полный премиум-курс по Django — высокоуровневому Python-фреймворку для веб-разработки. Вы пройдёте весь путь от паттерна MVT и первого проекта до моделей и ORM, миграций, views и маршрутизации, шаблонов, форм, аутентификации, встроенной защиты от веб-атак, деплоя в продакшен через Nginx и Gunicorn и построения REST API. Каждый урок — это глубокое объяснение с диаграммами, запускаемыми примерами, разбором частых ошибок новичков и проверенными практиками. Контент актуален для Django 5.2 LTS и 6.0.

Курс «Django: веб на Python» состоит из 10 разделов и 37 уроков: Введение и архитектура MVT, Модели и база данных, Views и URL, Шаблоны, Формы и пользователи, К продакшену, ORM вглубь и оптимизация, Django REST Framework, Продвинутые возможности Django и Кэширование, задачи и масштабирование. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение и архитектура MVT

    1. Что такое Django и паттерн MVT

      Знакомство с Django: зачем нужен фреймворк, паттерн MVT, проект и приложения, полный путь HTTP-запроса от URL до ответа.

    2. Установка, проект и первое приложение

      Установка Django в виртуальное окружение, создание проекта и приложения, структура файлов, регистрация в INSTALLED_APPS и запуск сервера.

    3. Жизненный цикл запроса и middleware

      Полный путь HTTP-запроса в Django: сервер, middleware, URLconf, view, HttpResponse. Объект request, методы GET и POST, как работает URL-резолвер.

  2. 2 Модели и база данных

    1. Модели: классы Python как таблицы БД

      Модели Django как декларативное описание таблиц: поля и их типы, опции null/blank/default, класс Meta, метод __str__, ORM и защита от SQL-инъекций.

    2. Миграции: версионирование схемы БД

      Система миграций Django: makemigrations и migrate, файлы миграций, таблица django_migrations, граф зависимостей, откат, sqlmigrate и частые ошибки.

    3. ORM и QuerySet: запросы к базе на Python

      Менеджер objects и QuerySet: filter, exclude, order_by, лукапы с двойным подчёркиванием, ленивость запросов, отличие get от filter, защита от N+1.

    4. Связи моделей: ForeignKey, M2M, OneToOne

      Три типа отношений в Django: ForeignKey, ManyToManyField, OneToOneField. Параметр on_delete, обратные связи и related_name, промежуточные таблицы, защита от N+1.

    5. Админка: бесплатный CRUD из коробки

      Встроенная админ-панель Django: createsuperuser, регистрация модели, класс ModelAdmin, опции list_display, list_filter, search_fields, inline-формы и безопасность.

  3. 3 Views и URL

    1. Функциональные views (FBV)

      Функциональные views Django: функция request→response, помощники render, redirect, get_object_or_404, обработка GET и POST, паттерн POST-redirect-GET, возврат JSON.

    2. Class-Based Views и generic views

      Class-Based Views Django: ListView, DetailView, CreateView, UpdateView, DeleteView. Подключение через as_view(), механизм dispatch, выбор между FBV и CBV.

    3. URLconf: маршрутизация с path() и reverse

      Маршрутизация Django: path() и конвертеры типов (int, slug, uuid), include() для модульности, именованные маршруты, reverse и тег url, get_absolute_url.

  4. 4 Шаблоны

    1. Шаблоны DTL: переменные, теги, фильтры

      Django Template Language: переменные через {{ }}, теги if и for, фильтры, передача context из view, автоэкранирование HTML и защита от XSS.

    2. Наследование шаблонов: extends и блоки

      Наследование шаблонов Django: базовый шаблон с block, расширение через extends, include для фрагментов, block.super, размещение шаблонов в подпапках приложений.

    3. Статические файлы: static, collectstatic, media

      Работа со статикой в Django: тег static, настройки STATIC_URL/STATIC_ROOT/STATICFILES_DIRS, collectstatic, разница static и media, WhiteNoise для продакшена.

  5. 5 Формы и пользователи

    1. Формы Django: валидация и cleaned_data

      Класс Form в Django: декларативное описание полей, поток валидации, is_valid и cleaned_data, errors, методы clean для кастомной валидации, csrf_token в шаблоне.

    2. ModelForm: формы из моделей и save()

      ModelForm в Django: генерация полей из модели через Meta, сохранение методом save(), приём commit=False, редактирование через instance, связь с CreateView и UpdateView.

    3. Пользователи: аутентификация и пароли

      Система пользователей Django: модель User, authenticate/login/logout, декоратор login_required и LoginRequiredMixin, хеширование паролей с солью, сессии.

    4. Безопасность: XSS, CSRF, SQL-инъекции

      Встроенная защита Django: автоэкранирование от XSS, CSRF-токен, параметризованные запросы ORM против SQL-инъекций, защитные заголовки, ALLOWED_HOSTS, CSP в Django 6.0.

  6. 6 К продакшену

    1. Настройки для продакшена и секреты

      Подготовка settings для продакшена: секреты в переменных окружения, DEBUG=False, ALLOWED_HOSTS, PostgreSQL вместо SQLite, разделение настроек base/dev/prod, django-environ.

    2. Деплой: Gunicorn, Nginx и продакшен-стек

      Развёртывание Django в продакшене: почему не runserver, связка Nginx + Gunicorn/Uvicorn, воркеры, обратный прокси, systemd, чек-лист migrate/collectstatic/check --deploy.

    3. Django REST Framework: API на Django

      Основы Django REST Framework: сериализаторы (модель ↔ JSON), ModelViewSet для CRUD, роутеры с автогенерацией URL, права доступа, пагинация, async-возможности Django 5.2.

  7. 7 ORM вглубь и оптимизация

    1. Ленивость QuerySet: когда выполняется запрос

      QuerySet в Django ленив: запрос уходит в базу лишь при обращении к данным. Разбираем кэш результата, цепочки фильтров и сужение выборки через only/defer/values.

    2. Проблема N+1: select_related и prefetch_related

      Проблема N+1 в Django ORM: откуда лишние запросы, select_related делает JOIN для ForeignKey, а prefetch_related грузит M2M и обратные связи отдельным запросом.

    3. annotate, aggregate, Q и F

      Агрегации в Django ORM: aggregate для сводки выборки, annotate для значений на строку, F-выражения для операций в базе и Q-объекты для сложных условий с OR.

    4. Транзакции, блокировки и индексы

      Транзакции в Django: atomic для атомарности, select_for_update против гонок, когда нужны индексы (db_index, Meta.indexes) и raw() как мера для сырого SQL.

  8. 8 Django REST Framework

    1. Сериализаторы: преобразование и валидация

      Сериализаторы DRF: Serializer vs ModelSerializer, валидация полей и объекта, вложенные сериализаторы, read_only и write_only, представление и парсинг JSON.

    2. APIView, generics и ViewSet

      Вьюхи DRF: низкоуровневый APIView, generic-вьюхи (ListCreateAPIView и др.), ViewSet и роутеры, маршрутизация через router, что выбрать под задачу.

    3. Аутентификация и права

      Аутентификация и авторизация в DRF: TokenAuthentication и JWT, классы permissions (IsAuthenticated, кастомные), разница между аутентификацией и правами доступа.

    4. Пагинация, фильтрация, throttling

      DRF: виды пагинации (page/limit-offset/cursor), фильтрация через django-filter, поиск и сортировка (SearchFilter, OrderingFilter), ограничение частоты запросов throttling.

  9. 9 Продвинутые возможности Django

    1. Class-based views вглубь

      Зачем нужны class-based views в Django, иерархия и миксины, ListView/DetailView/CreateView, get_queryset и get_context_data, когда CBV, а когда функции.

    2. Сигналы: когда использовать и когда нет

      Сигналы Django: post_save, pre_delete и другие, декоратор receiver, типичные применения, почему сигналы усложняют отладку и какие есть альтернативы.

    3. Своя middleware и порядок

      Как пишется middleware в Django, порядок выполнения по списку MIDDLEWARE, обработка запроса и ответа, реальные примеры — логирование и замер времени.

    4. Менеджеры и команды управления

      Кастомные Manager и QuerySet-методы в Django для переиспользования запросов, и собственные команды manage.py через BaseCommand с аргументами.

  10. 10 Кэширование, задачи и масштабирование

    1. Кэширование в Django

      Фреймворк кэширования Django: бэкенды Redis и Memcached, кэш всей страницы, фрагмента шаблона и низкоуровневый cache API, ключи и инвалидация по сигналам.

    2. Фоновые задачи с Celery

      Фоновые задачи Django через Celery: брокер и воркер, очереди и приоритеты, периодические задачи Celery Beat и идемпотентность задач.

    3. Производительность и безопасность

      Производительность и безопасность Django: debug-toolbar, борьба с N+1, manage.py check --deploy и оборонительный чеклист CSRF, XSS и секретов.

    4. Тестирование Django

      Тестирование Django: TestCase и тестовая БД, Client для запросов, фикстуры и factory_boy, что покрывать и как держать тесты быстрыми.