
Кеширование в Django: страницы, фрагменты и запросы к базе
Три уровня кеша в Django и цена каждого: когда хватает кеша фрагмента, когда нужна вся страница и почему кеш QuerySet чаще вредит, чем помогает.

Три уровня кеша в Django и цена каждого: когда хватает кеша фрагмента, когда нужна вся страница и почему кеш QuerySet чаще вредит, чем помогает.

Периодические задачи в Django на Celery beat выглядят просто, пока планировщик не запустит одну задачу дважды или не пропустит её после деплоя. Разбираем приёмы, которые убирают дубли, гонки и молчаливые провалы.

Как подключить Celery к Django-проекту, вынести отправку писем и генерацию отчётов из веб-запроса и не собрать типовые грабли с брокером, сериализацией и запуском воркера.

Три инструмента подготовки данных в тестах Django — JSON-фикстуры, factory_boy и ручная сборка — дают разный результат по скорости и хрупкости. Разбираем, что когда выбрать и где каждый ломается.

Две ветки создали миграции 0042 на одну модель. При слиянии Django падает с InconsistentMigrationHistory. Разбираем, откуда берётся конфликт и как его чинить без дропа базы.

Список из 200 тысяч записей отдаёт 502, а фильтр по внешнему ключу генерирует лишний запрос на каждую строку. Разбираем типичные ошибки пагинации, фильтрации и сортировки в Django REST Framework.

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

JWT в Django REST Framework часто настраивают за пять минут по документации и выкатывают. А потом токены не отзываются, лежат в localStorage и живут по неделе. Разбираем, что проверить до релиза.

Разбираем, где в Django REST Framework провести границу между сериализатором и вьюсетом, чтобы одна валидация не расползлась по трём местам, а список и деталь не тянули одинаковый тяжёлый запрос.

Стандартных прав add/change/delete/view хватает для админки, но ломается на бизнес-логике. Разбираем, как построить свою систему доступа в Django 5.x без сторонних пакетов.

Замена стандартной User в Django — операция, которую почти невозможно откатить после первой миграции. Разбираем два рабочих подхода, цену каждого и типичную ошибку с миграциями.

Сигналы удобны для развязки кода, но именно они превращают простой save() в цепочку скрытых побочных эффектов. Разбираем, где сигнал оправдан, а где лучше явный вызов.