Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Django: от основ до production
Python экосистема·32 темы·320 вопросов·уровень Junior, Middle, Senior

Django: от основ до production

Практический курс по Django 5.2 LTS и Django 6.0: модели и ORM, HTTP-слой, безопасность, DRF, тестирование, фоновые задачи, деплой и архитектурные компромиссы. Устаревшие подходы вынесены в явно помеченные legacy-примечания.

Начать курс

Django: от основ до production

Версия курса: 3.0. Редакция от 19 июля 2026 года для Python 3.12+, Django 5.2 LTS и Django 6.0.

Курс учит не только синтаксису фреймворка, но и тому, как принимать инженерные решения: где нужна транзакция, почему возникает N+1, как не открыть доступ к чужим данным и что проверить перед деплоем.

Внутри — 32 последовательные темы, 320 вопросов с вариантами ответа и 7 открытых экзаменационных вопросов. Оценка времени намеренно не фиксируется: она сильно зависит от опыта студента и от того, выполняет ли он примеры самостоятельно.

Целевая среда курса: Python 3.12+, Django 5.2 LTS и Django 6.0. Основные примеры совместимы с обеими ветками, а возможности Django 6.0 отмечены отдельно.

Как читать пометки о версиях

В реальной работе Django-проект не всегда использует последнюю версию. Поэтому устаревшие подходы не исчезают из курса бесследно, а получают явную маркировку.

  • Актуально для 5.2/6.0 — можно использовать в новом коде.
  • Новое в Django 6.0 — возможность отсутствует в Django 5.2.
  • Legacy — встречается в старых проектах, но не рекомендуется для нового кода.
  • Удалено в Django X.Y — такой код нужно заменить перед обновлением.

Для нового проекта выбирайте последнюю patch-версию поддерживаемой ветки. На июль 2026 года Django 5.2 остаётся LTS-веткой, а Django 6.0 — текущей feature-веткой. Django 4.2 уже не получает исправления безопасности.

Для кого этот курс

УровеньРезультат
JuniorПонимание жизненного цикла запроса, моделей, форм, шаблонов, auth и тестов
MiddleУверенная работа с ORM, транзакциями, DRF, кэшем и production-настройками
SeniorАнализ компромиссов архитектуры, изоляции данных, фоновых задач и масштабирования

Курс предполагает базовое знание Python, SQL, Git и командной строки. Docker можно изучать по ходу программы.

Программа

1. Основа Django и работа с данными

  1. Введение в Django: MTV, проект и приложение, settings, WSGI и ASGI.
  2. Модели: поля, ограничения БД, миграции и жизненный цикл экземпляра.
  3. Базовые ORM-запросы: ленивые QuerySet, фильтрация, агрегация.
  4. Продвинутый ORM: выражения, subquery, managers и транзакции.
  5. Оптимизация ORM: N+1, планы запросов, индексы и bulk-операции.

2. HTTP-слой

  1. Function-based и class-based views.
  2. Generic class-based views.
  3. URL routing, namespaces и reverse.
  4. Django Template Language и template partials Django 6.0.
  5. Формы, ModelForm, загрузка файлов и formsets.

3. Пользователи и внутренние инструменты

  1. Аутентификация и custom user model.
  2. Permissions, groups и object-level authorization.
  3. Безопасная кастомизация Django Admin.
  4. Middleware и порядок обработки запроса.
  5. Signals, transaction.on_commit() и границы их применения.

4. Качество и API

  1. Unit-тесты и быстрые тестовые двойники.
  2. Интеграционные и E2E-тесты.
  3. DRF serializers и безопасная запись данных.
  4. DRF views, ViewSets, pagination и filtering.
  5. API authentication, permissions и throttling.

5. Production-практики

  1. Кэширование, Redis и инвалидация после commit.
  2. Security hardening и встроенный CSP Django 6.0.
  3. Async Django, ограничения async ORM и ASGI.
  4. Celery и встроенный Tasks framework Django 6.0.
  5. Docker, application servers и безопасный деплой.
  6. Логи, метрики, tracing и health checks.
  7. Транзакции, блокировки, реплики и connection pooling.
  8. DDD и Clean Architecture без лишнего оверинжиниринга.
  9. Микросервисы, outbox, идемпотентность и eventual consistency.
  10. GraphQL со Strawberry и request-scoped DataLoader.
  11. Измеримая оптимизация производительности.
  12. Итоговый SaaS: tenant isolation, роли, подписки и usage limits.

Стек

ОбластьИнструменты
CorePython 3.12+, Django 5.2 LTS / 6.0, PostgreSQL 15+
APIDjango REST Framework, Strawberry GraphQL
Кэш и очередиRedis или Memcached, Celery, RabbitMQ/Redis
ТестыDjango TestCase, pytest-django, Playwright
ДеплойDocker Compose, Gunicorn или ASGI-сервер, reverse proxy/CDN
НаблюдаемостьPython logging, Sentry, Prometheus, Grafana, OpenTelemetry

Graphene рассматривается как legacy-вариант, который ещё встречается в существующих проектах. Основной GraphQL-пример курса использует Strawberry.

Принцип работы с примерами

Каждая тема строится одинаково:

  1. Сначала разбираем задачу и ограничения.
  2. Затем смотрим небольшой рабочий пример.
  3. После кода обсуждаем гонки, права доступа, нагрузку и альтернативы.
  4. В конце проверяем понимание вопросами и чеклистом.

Листинг в учебнике не считается готовым production-решением, пока не объяснены его границы. Особенно это относится к платежам, multi-tenancy, фоновой обработке, кэшу и авторизации.

Результат

После курса студент сможет собрать и проверить Django-приложение, объяснить выбранные решения, найти типичные проблемы ORM и безопасности, написать тесты и подготовить сервис к эксплуатации. Итоговая SaaS-глава связывает эти навыки в один проект, но не скрывает производственные компромиссы за демонстрационным кодом.

  1. 1

    Введение в Django

    MTV, структура проекта, безопасные settings, WSGI и ASGI

    10 вопросов10.0(1)
  2. 2

    Модели: Основы

    Поля, ограничения БД, миграции и жизненный цикл модели

    10 вопросов9.0(1)
  3. 3

    ORM: Базовые запросы

    QuerySet, filter, exclude, order_by, values, annotate, aggregate

    10 вопросов9.0(1)
  4. 4

    ORM: Продвинутые техники

    F/Q, subquery, custom QuerySet, транзакции и безопасный raw SQL

    10 вопросов8.0(1)
  5. 5

    Оптимизация ORM

    N+1, EXPLAIN, индексы, bulk-операции и потоковая обработка

    10 вопросов9.0(1)
  6. 6

    Представления: FBV и CBV

    Function-based vs Class-based views, mixins, decorators

    10 вопросов10.0(1)
  7. 7

    Generic Class-Based Views

    ListView, DetailView, CreateView, UpdateView, DeleteView, FormView

    10 вопросов7.0(1)
  8. 8

    URL Routing

    path, re_path, include, namespace, reverse, get_object_or_404

    10 вопросов8.0(1)
  9. 9

    Шаблоны: DTL

    DTL, наследование, custom tags и template partials Django 6.0

    10 вопросов10.0(1)
  10. 10

    Формы и Виджеты

    Form, ModelForm, валидация, файлы, formsets и виджеты

    10 вопросов8.0(1)
  11. 11

    Аутентификация: Пользователи

    User модель, login/logout, password hashing, custom user model

    10 вопросов7.0(1)
  12. 12

    Авторизация: Permissions & Groups

    Permissions, Groups, decorators, mixins, object-level permissions

    10 вопросов6.0(1)
  13. 13

    Django Admin: Кастомизация

    ModelAdmin, inline, actions, custom pages, admin sites

    10 вопросов7.0(1)
  14. 14

    Middleware

    Создание middleware, порядок выполнения, request/response hooks

    10 вопросов9.0(1)
  15. 15

    Signals

    Signals, transaction.on_commit и границы скрытых side effects

    10 вопросов8.0(1)
  16. 16

    Тестирование: Unit Tests

    TestCase, Client, RequestFactory, pytest-django, fixtures, factories

    10 вопросов5.0(1)
  17. 17

    Тестирование: Integration & E2E

    Integration тесты, Selenium, Playwright, coverage, CI integration

    10 вопросов
  18. 18

    DRF: Сериализаторы

    Serializer, ModelSerializer, nested serializers, validation

    10 вопросов
  19. 19

    DRF: Views & ViewSets

    APIView, GenericAPIView, ViewSet, Router, pagination, filtering

    10 вопросов
  20. 20

    DRF: Аутентификация

    Session/Token/JWT, OAuth2/OIDC, permissions и throttling

    10 вопросов
  21. 21

    Кэширование с Redis

    Cache backends, per-view cache, template fragments, low-level API, invalidation

    10 вопросов
  22. 22

    Безопасность: Hardening

    CSRF, XSS, SQLi, uploads, CSP, security headers и секреты

    10 вопросов
  23. 23

    Асинхронный Django

    ASGI, async views/ORM, WebSockets и ограничения async-кода

    10 вопросов
  24. 24

    Фоновые задачи: Celery

    Celery, commit-aware enqueue, retries, идемпотентность и Django Tasks

    10 вопросов
  25. 25

    Docker и Деплой

    Dockerfile, docker-compose, Gunicorn, Nginx, CI/CD, production settings

    10 вопросов
  26. 26

    Мониторинг и Логирование

    Logging config, Sentry, Prometheus, Grafana, health checks, alerts

    10 вопросов
  27. 27

    Базы Данных: Продвинутые темы

    Транзакции, блокировки, isolation, replicas и connection pooling

    10 вопросов
  28. 28

    Архитектура: DDD и Clean Architecture

    Domain-Driven Design, layers, repositories, services, dependency injection

    10 вопросов
  29. 29

    Микросервисы с Django

    Границы сервисов, outbox, идемпотентность, события и Saga

    10 вопросов
  30. 30

    GraphQL со Strawberry

    Schema, authorization, queries, mutations и request-scoped DataLoader

    10 вопросов
  31. 31

    Оптимизация производительности

    Profiling, bottleneck analysis, database optimization, CDN, scaling strategies

    10 вопросов
  32. 32

    Финальный проект: SaaS

    Связный SaaS-кейс: tenant isolation, роли, подписки и usage limits

    10 вопросов
  33. Зачёт

    Доступен после всех тем (0 из 32)

  34. Экзамен

    Доступен после зачёта

68 / 68

MTV

Основы Django

Model-Template-View — принятые в Django названия частей MVC-подобного подхода. View обрабатывает HTTP-сценарий, Template формирует представление, Model описывает данные; бизнес-логика не обязана целиком жить в model.

Пример

View получает QuerySet и передаёт подготовленный context в Template.

Связанные термины

ORM

Модели и ORM

Object-Relational Mapping — API Django для описания tables как Python models и построения параметризованных SQL queries. ORM не отменяет знание индексов, транзакций и плана выполнения.

Пример

Project.objects.filter(organization=organization, is_active=True)

Связанные термины

QuerySet

Модели и ORM

Ленивое описание database query. SQL обычно выполняется при iteration, list(), len(), bool(), serialization или другой evaluation; вычисленный QuerySet кэширует результат внутри своего экземпляра.

Пример

queryset = User.objects.filter(is_active=True) # пока только строит query

Связанные термины

Migration

Модели и ORM

Версионированная операция изменения schema/data и исторического состояния models. makemigrations создаёт migration, migrate применяет dependency graph; сгенерированный файл нужно review.

Пример

python manage.py makemigrations && python manage.py migrate

Связанные термины

Database Constraint

Модели и ORM

Инвариант, проверяемый базой данных независимо от пути записи: UNIQUE, CHECK, PRIMARY/FOREIGN KEY. Django описывает именованные ограничения через Meta.constraints.

Пример

models.UniqueConstraint(fields=['organization', 'name'], name='project_name_in_org')

Связанные термины

select_related()

Модели и ORM

Метод QuerySet, загружающий ForeignKey/OneToOne через SQL JOIN. Уменьшает N+1 для одиночных relations, но слишком широкий JOIN может увеличить объём результата.

Пример

Post.objects.select_related('author')

Связанные термины

prefetch_related()

Модели и ORM

Метод QuerySet, выполняющий дополнительные queries для коллекций и связывающий results в Python. Подходит ManyToMany и reverse ForeignKey; Prefetch позволяет задать фильтр и to_attr.

Пример

Post.objects.prefetch_related(Prefetch('comments', queryset=Comment.objects.filter(public=True)))

Связанные термины

F Expression

Модели и ORM

Ссылка на значение database field внутри query. Позволяет выполнять arithmetic/comparison на стороне БД и избегать read-modify-write race для простых updates.

Пример

Counter.objects.filter(pk=pk).update(value=F('value') + 1)

Связанные термины

Q Expression

Модели и ORM

Объект для композиции query conditions через &, |, ^ и ~. Нужен для OR/NOT и динамического построения фильтра.

Пример

Post.objects.filter(Q(status='public') | Q(author=request.user))

Связанные термины

Database Transaction

Модели и ORM

Граница атомарности database operations. transaction.atomic() делает commit/rollback для выбранного connection, но не откатывает уже выполненный HTTP call, email или broker publish.

Пример

with transaction.atomic(): account.debit(amount); ledger.record(amount)

Связанные термины

transaction.on_commit()

Модели и ORM

Регистрирует callback, который выполнится после успешного commit внешней transaction. Устраняет запуск side effect до commit, но сам по себе не закрывает gap между commit и broker publish.

Пример

transaction.on_commit(lambda: notify_order.delay(order.pk))

Связанные термины

N+1 Problem

Модели и ORM

Один query получает N rows, затем обращение к relation выполняет ещё до N queries. Решение выбирают по связи: loading plan, aggregation или batch, а результат закрепляют query-budget test.

Пример

Post.objects.select_related('author') устраняет query на author в цикле.

Связанные термины

FBV

Представления и HTTP

Function-Based View — обычная callable function, принимающая request и возвращающая response. Удобна для явного небольшого flow и композиции decorators.

Пример

def health(request): return JsonResponse({'status': 'ok'})

Связанные термины

CBV

Представления и HTTP

Class-Based View — view как class с dispatch и method handlers. Полезна для generic behavior/mixins; глубокую и неочевидную inheritance chain лучше не строить.

Пример

path('posts/', PostListView.as_view(), name='post-list')

Связанные термины

Middleware

Представления и HTTP

Компонент, оборачивающий Django view. Request проходит через middleware по списку внутрь, response — через вошедшие слои обратно; middleware может вернуть ранний response.

Пример

SecurityMiddleware обычно располагают близко к началу MIDDLEWARE.

Связанные термины

render()

Представления и HTTP

Shortcut, который загружает template, рендерит его с context и возвращает HttpResponse. Status и content_type можно передать явно.

Пример

return render(request, 'posts/list.html', {'posts': posts}, status=200)

Связанные термины

Template

Шаблоны

Шаблон представления, обычно HTML с Django Template Language. Он форматирует подготовленные данные и не должен скрывать database queries или критичную бизнес-логику.

Пример

{% extends 'base.html' %}{% block content %}{{ title }}{% endblock %}

Связанные термины

Template Context

Шаблоны

Mapping values, доступных template во время render. Context processors добавляют общие значения, но увеличивают неявные dependencies каждого template.

Пример

return render(request, 'account.html', {'account': account})

Связанные термины

Template Filter

Шаблоны

Преобразование значения в Django Template Language. Filter должен быть предсказуемым и дешёвым; безопасность результата зависит от escaping/context.

Пример

{{ created_at|date:'Y-m-d' }}

Связанные термины

Form

Формы

Django class для parsing, validation и отображения входных данных, не обязательно связанных с model. Bound form хранит data/files и errors.

Пример

form = ContactForm(request.POST or None)

Связанные термины

ModelForm

Формы

Form, создающая поля и save flow из Django model. В Meta.fields лучше перечислять разрешённые поля явно, чтобы новое model field не стало mass-assignment surface.

Пример

class ProfileForm(forms.ModelForm): class Meta: model = Profile; fields = ['display_name']

Связанные термины

is_valid()

Формы

Запускает validation bound form и возвращает bool. При успехе данные читают из cleaned_data; при ошибке form.errors содержит структурированные сообщения.

Пример

if form.is_valid(): send_message(**form.cleaned_data)

Связанные термины

User Model

Аутентификация и авторизация

Model identity, заданная AUTH_USER_MODEL. Reusable code ссылается через settings.AUTH_USER_MODEL, а runtime получает class через get_user_model(), а не импортирует built-in User напрямую.

Пример

User = get_user_model()

Связанные термины

Custom User Model

Аутентификация и авторизация

Собственная user model, обычно subclass AbstractUser для нового проекта. Её задают до первых migrations; переход после создания schema требует сложной ручной миграции relations/data.

Пример

AUTH_USER_MODEL = 'accounts.User'

Связанные термины

authenticate()

Аутентификация и авторизация

Вызывает configured authentication backends и возвращает user либо None. Credentials зависят от backend; request следует передавать для context-aware проверок.

Пример

user = authenticate(request, username=name, password=password)

Связанные термины

@login_required

Аутентификация и авторизация

Decorator для FBV, требующий authenticated user и обычно перенаправляющий anonymous request на LOGIN_URL. Он не проверяет право на конкретный объект.

Пример

@login_required def dashboard(request): ...

Связанные термины

Django Permission

Аутентификация и авторизация

Codename права, связанный с content type; стандартно создаются add/change/delete/view. Groups агрегируют permissions, но object-level policy требует отдельной реализации.

Пример

@permission_required('blog.change_post', raise_exception=True)

Связанные термины

Group

Аутентификация и авторизация

Именованный набор Django permissions, назначаемый users. Подходит coarse-grained ролям, но не кодирует tenant/object scope автоматически.

Пример

user.groups.add(editors_group)

Связанные термины

Object-level Authorization

Аутентификация и авторизация

Проверка права субъекта на конкретную row/resource. Обычно queryset сначала ограничивают owner/tenant, а затем проверяют действие; frontend visibility не является защитой.

Пример

Post.objects.filter(owner=request.user).get(pk=pk)

Связанные термины

Django Admin

Django Admin

Внутренний model-centric интерфейс для доверенных operators. ModelAdmin, inlines и actions ускоряют back-office, но admin не заменяет customer-facing product и требует строгих permissions/audit.

Пример

@admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ['title', 'status']

Связанные термины

TestCase

Тестирование

Django test class с изоляцией database через transaction/savepoints и быстрым reset между tests. Подходит большинству model/view tests, но внешний commit и некоторые lock semantics в нём не воспроизводятся.

Пример

class ProjectTests(TestCase): def test_create(self): ...

Связанные термины

TransactionTestCase

Тестирование

Более медленный Django test class, который допускает реальные commit/rollback и очищает database между tests. Нужен для on_commit, select_for_update и transaction behavior.

Пример

class CommitTests(TransactionTestCase): def test_callback_runs_after_commit(self): ...

Связанные термины

Django Test Client

Тестирование

In-process client для request/response tests без реального network server. Проверяет URL routing, middleware и view, но не заменяет browser/E2E и proxy deployment test.

Пример

response = self.client.get('/projects/', HTTP_HOST='acme.test')

Связанные термины

pytest-django

Тестирование

Pytest plugin, который настраивает Django и управляет test database. Маркер django_db разрешает DB access; transaction=True нужен только для реального transaction behavior.

Пример

@pytest.mark.django_db def test_project(project): assert project.pk

Связанные термины

Django REST Framework

Django REST Framework

Third-party toolkit для HTTP APIs на Django: serializers, views/viewsets, authentication, permissions, parsers, renderers, pagination и throttling.

Пример

from rest_framework.viewsets import ModelViewSet

Связанные термины

Serializer

Django REST Framework

DRF class, преобразующий objects в primitive data и валидирующий input. Renderer отдельно превращает primitives в JSON; writable fields и nested writes задаются явно.

Пример

class UserSerializer(serializers.ModelSerializer): class Meta: model = User; fields = ['id', 'email']

Связанные термины

ViewSet

Django REST Framework

DRF class, группирующий actions одного resource. Router строит routes, но queryset, permissions, pagination и transaction boundaries остаются ответственностью приложения.

Пример

class ProjectViewSet(ModelViewSet): serializer_class = ProjectSerializer

Связанные термины

DRF Throttling

Django REST Framework

Ограничение частоты requests по настроенному scope/key. Это защита fair-use, а не строгая security boundary или точный billing meter.

Пример

throttle_scope = 'reports'

Связанные термины

Signal

Продвинутые темы

In-process publish/subscribe hook, например post_save или m2m_changed. Подходит слабосвязанным уведомлениям, но скрытая критичная бизнес-логика усложняет порядок, transaction semantics и тестирование.

Пример

@receiver(post_save, sender=Profile) def observe_profile_change(**kwargs): ...

Связанные термины

GraphQL

Продвинутые темы

Типизированный query language/runtime для API, где client выбирает опубликованные fields. Сервер контролирует resolvers, authorization, pagination и стоимость; один HTTP request не означает один SQL query.

Пример

query Feed { posts { title author { username } } }

Связанные термины

Caching

Кэширование

Хранение повторно используемого результата с заранее заданной свежестью и fallback. Cache key обязан учитывать все dimensions видимости; cache не становится source of truth.

Пример

cache.set(f'project-list:v2:{organization.pk}', data, timeout=300)

Связанные термины

Cache-aside

Кэширование

Приложение сначала читает cache, при miss получает данные из source of truth и записывает результат. Нужны sentinel для валидного None, TTL/invalidation и защита от stampede.

Пример

value = cache.get(key, sentinel); value = load() if value is sentinel else value

Связанные термины

Redis

Кэширование

Networked in-memory data store, часто используемый как cache, Celery broker или session backend. Эти роли имеют разные durability/eviction requirements и при росте могут требовать разных instances.

Пример

'BACKEND': 'django.core.cache.backends.redis.RedisCache'

Связанные термины

CSRF

Безопасность

Cross-Site Request Forgery заставляет browser с пользовательскими credentials отправить нежелательный unsafe request. Django сверяет CSRF secret/token для cookie/session-auth forms и AJAX.

Пример

{% csrf_token %}

Связанные термины

XSS

Безопасность

Cross-Site Scripting — выполнение attacker-controlled script в origin приложения. Django autoescape помогает в HTML text/attributes, но контекст JavaScript, URL, safe/mark_safe и DOM APIs требуют отдельной защиты.

Пример

Не помещайте user input в script; передавайте data через json_script.

Связанные термины

SQL Injection

Безопасность

Изменение структуры SQL через непараметризованный input. QuerySet и placeholders параметризуют values, но raw SQL identifiers/order fragments требуют allowlist, а не параметра.

Пример

cursor.execute('SELECT * FROM users WHERE id = %s', [user_id])

Связанные термины

Content Security Policy

Безопасность

Browser policy, ограничивающая источники scripts/styles/images и другие capabilities. Django 6.0 имеет built-in CSP middleware/settings; CSP дополняет escaping, а не заменяет его.

Пример

SECURE_CSP = {'default-src': [CSP.SELF], 'script-src': [CSP.SELF, CSP.NONCE]}

Связанные термины

Audit Log

Безопасность

Append-oriented запись чувствительных действий: субъект, tenant, operation, object, время и correlation ID. Не должна содержать passwords, raw tokens и лишние персональные данные.

Пример

role.changed actor=42 organization=7 target=membership:91

Связанные термины

WSGI

Деплой и наблюдаемость

Синхронный Python web server interface. Django WSGI deployment хорошо подходит обычному request/response; async view под WSGI запускается без преимуществ целого ASGI stack.

Пример

gunicorn project.wsgi:application

Связанные термины

ASGI

Async и фоновые задачи

Async server/application interface для HTTP и долгоживущих protocols. Django ASGI deployment раскрывает преимущества async views только при совместимом middleware и I/O stack.

Пример

uvicorn project.asgi:application

Связанные термины

Async View

Async и фоновые задачи

Django view, объявленная async def. Она конкурентно ждёт non-blocking I/O под ASGI, но не ускоряет CPU work, database lock или плохо спланированный query.

Пример

async def status(request): data = await client.fetch(); return JsonResponse(data)

Связанные термины

WebSocket

Async и фоновые задачи

Долгоживущий двунаправленный protocol поверх одного connection. Требует authentication lifecycle, heartbeat, backpressure, connection limits и cleanup.

Пример

Django Channels consumer принимает websocket.connect/receive/disconnect.

Связанные термины

Django Channels

Async и фоновые задачи

Third-party ASGI integration для WebSockets/consumers/channel layers. Channel layer — транспорт сообщений, а не durable database или универсальная background queue.

Пример

path('ws/notifications/', NotificationsConsumer.as_asgi())

Связанные термины

Celery

Async и фоновые задачи

Distributed task queue, где producer публикует message через broker, worker выполняет task, а Beat публикует schedule. Delivery обычно at-least-once, поэтому task должна быть idempotent.

Пример

send_report.delay_on_commit(report.pk)

Связанные термины

Django Tasks Framework

Async и фоновые задачи

Новое в Django 6.0 API для определения/enqueue задач и backend abstraction. Django не поставляет production worker; built-in backends предназначены для development/testing.

Пример

result = send_email.enqueue(user_id=42)

Связанные термины

Docker

Деплой и наблюдаемость

Один из способов собрать immutable application image и изолировать runtime dependencies. Django можно надёжно deploy и без containers; Docker не заменяет secrets, migrations, health checks и backup.

Пример

FROM python:3.12-slim

Связанные термины

Docker Compose

Деплой и наблюдаемость

Декларативный запуск нескольких containers, особенно удобный для local development, CI и небольших controlled deployments. Сам по себе не даёт zero-downtime, autoscaling или managed secrets.

Пример

docker compose up --build

Связанные термины

Gunicorn

Деплой и наблюдаемость

Pre-fork Python application server, традиционно используемый для WSGI. Для ASGI с Gunicorn применяют актуальный external worker package либо запускают ASGI server напрямую.

Пример

gunicorn project.wsgi:application --workers 4

Связанные термины

Nginx

Деплой и наблюдаемость

Web server/reverse proxy для TLS termination, routing, buffering, static files и limits. Это распространённый, но не обязательный выбор: ту же роль может выполнять managed edge/load balancer.

Пример

proxy_pass http://django_upstream;

Связанные термины

Sentry

Деплой и наблюдаемость

Error/performance monitoring platform для группировки exceptions, releases и traces. Перед отправкой контекста настраивают sampling и удаление secrets/PII.

Пример

sentry_sdk.init(dsn=settings.SENTRY_DSN, send_default_pii=False)

Связанные термины

Prometheus

Деплой и наблюдаемость

Time-series monitoring system с metric labels и PromQL. Labels должны иметь bounded cardinality: user/request/tenant ID обычно не подходят.

Пример

http_requests_total{route='/projects/:id', status='200'}

Связанные термины

Domain-Driven Design

Архитектура

Подход к сложному domain через ubiquitous language, bounded contexts и явные business invariants. DDD не требует отдельного repository/interface для каждой Django model.

Пример

Billing и Fulfillment моделируют разные значения слова Order в разных contexts.

Связанные термины

Repository Pattern

Архитектура

Интерфейс коллекции domain objects, скрывающий storage details. В Django он полезен при реальной смене/композиции хранилищ, но тонкая обёртка над каждым QuerySet часто лишь дублирует ORM.

Пример

orders = order_repository.pending_for_account(account_id)

Связанные термины

Modular Monolith

Архитектура

Одно deployment-приложение с явными business modules, ownership и public boundaries. Сохраняет локальные transactions/refactoring и может подготовить осознанное извлечение service.

Пример

billing вызывает public API orders, но не импортирует его private models.

Связанные термины

Microservices

Архитектура

Стиль, где independently owned business capabilities имеют собственные contracts, data ownership, deployment и operations. Маленький container без автономии остаётся частью distributed monolith.

Пример

Billing владеет invoices и публикует InvoicePaid, не разделяя tables с Orders.

Связанные термины

Transactional Outbox

Архитектура

Business change и event/message сохраняются одной database transaction. Отдельный dispatcher повторяет publish; consumers всё равно обрабатывают duplicates идемпотентно.

Пример

Order и OutboxEvent создаются внутри одного transaction.atomic().

Связанные термины

Idempotency

Архитектура

Повтор одной logical operation с тем же key не создаёт второй бизнес-эффект. Особенно важна для POST, webhooks и at-least-once task delivery.

Пример

UniqueConstraint(provider, event_id) дедуплицирует webhook delivery.

Связанные термины

Tenant Isolation

Архитектура

Гарантия, что субъект одной organization не читает и не меняет данные другой. Scope применяют до object lookup, закрепляют constraints/tests и при необходимости усиливают RLS/schema/database boundary.

Пример

Project.objects.for_tenant(request.organization).get(pk=pk)

Связанные термины

Частые вопросы о курсе «Django: от основ до production»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Django: от основ до production»?

Курс включает 32 темы и 320 вопросов с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Django: от основ до production»?

Маршрут охватывает уровни Junior, Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Django: от основ до production» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Django: от основ до production» бесплатный?

Да, курс полностью бесплатный: все 32 темы доступны без оплаты.