
drf-spectacular: рабочая настройка OpenAPI-схемы в DRF
Как подключить drf-spectacular к Django REST Framework, получить корректную схему OpenAPI 3 и починить типичные места, где генератор угадывает неправильно.

Как подключить drf-spectacular к Django REST Framework, получить корректную схему OpenAPI 3 и починить типичные места, где генератор угадывает неправильно.

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

Дефолтный throttling в Django REST Framework хранит счётчики в LocMemCache, ломается при нескольких воркерах и не различает клиентов за одним IP. Разбираем, что проверить до релиза.

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

Один эндпоинт заказа тянет за собой позиции, товары и покупателя. Как отдавать вложенные данные в DRF без сотен запросов и не сломать запись — четыре подхода с ценой каждого.

Вложенные сериализаторы в Django REST Framework легко превращают один запрос в сотни SQL и ломают запись. Разбираем, как читать без N+1, писать с create/update и не тащить лишнее на список.

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

FileField кажется простым, пока файлы лежат рядом с кодом на одном сервере. Разбираем, как устроено хранение файлов в Django 5.x, где оно ломается и как перенести загрузки в S3 без переписывания моделей.

FileField отдаёт 404 после деплоя, картинки лежат вперемешку в одной папке, а сервер хранит осиротевшие файлы навсегда. Разбираем частые ошибки работы с файлами в Django и рабочие способы их обойти.

FileField и ImageField работают локально, но на проде отдают чужие файлы, теряют загрузки при рестарте и валятся под нагрузкой. Разбираем, что проверить до релиза.

Где на самом деле срабатывают clean_field, clean и валидаторы модели, почему form.is_valid() пропускает мусор в базу и как не размазать одну проверку по трём местам.

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