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

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

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

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

На активной модели с флагами is_published и deleted_at фильтры расползаются по вью и дублируются в API. Разбираем, почему кастомный Manager без QuerySet не спасает и где цепочка методов молча теряет условия.

Один цикл по queryset превращается в сотни запросов к базе. Разбираем, чем select_related отличается от prefetch_related, как поймать N+1 в проде и где эти методы всё равно не спасают.

Страница списка заказов начала отдавать 300+ SQL-запросов на один HTTP-запрос. Разбираем, чем select_related отличается от prefetch_related, где каждый ломается и что мерить.

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

Как заменить числовой id в адресе на читаемый слаг вроде /blog/kak-nastroit-slug/ — от поля в модели до маршрута и шаблона. Займёт около 20 минут.

Redirect в Django выглядит просто, пока не столкнёшься с потерей POST-данных, циклами и утечкой открытого редиректа. Разбираем, что происходит под капотом и где это ломается.

Как настроить фреймворк messages в Django 5.x: подключить, вывести в шаблоне, разобраться с уровнями и не потерять сообщение после редиректа. Займёт минут двадцать.

Создаём рабочую форму обратной связи на Django: от объявления класса до валидации и сохранения в базу. К концу получите форму, которая проверяет данные и не пускает мусор.

Как написать первый собственный фильтр для шаблонов Django, зарегистрировать его и подключить в шаблоне. От пустого проекта до работающего {{ price|add_vat }} — примерно за 20 минут.