Как backend-разработчик я пробовал разные фреймворки, но для нового проекта снова и снова выбираю Django. Это не привычка, а расчёт.
1. Рабочий продукт с первого дня
«Batteries-included» на практике — это аутентификация, админка, ORM, миграции, формы и защита (CSRF, XSS, SQL-инъекции) из коробки. В стартапе первая неделя должна уходить на продукт, а не на инфраструктуру.
class Course(models.Model):
title = models.CharField(max_length=150)
is_free = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
2. ORM — быстрый, если пользоваться правильно
«Медленный ORM» обычно означает N+1 запросов. select_related и prefetch_related сокращают десятки запросов до 2–3.
Ещё нюанс: при values().annotate() поле Meta.ordering попадает в GROUP BY и ломает группировку. Перед агрегацией пишите .order_by() — такую ошибку я нашёл и исправил в статистике своего портфолио.
3. Мультиязычность
WeliCoDev работает на узбекском, русском и английском: i18n Django и django-modeltranslation дают отдельные поля перевода, а контент управляется из одного дашборда.
4. Экосистема
- DRF — API для мобильных приложений и Next.js (как в NutriZone);
- Celery + Redis — фоновые задачи: сообщения в Telegram, отложенные посты, напоминания;
- ASGI — webhook Telegram-бота и асинхронные запросы в одном проекте.
5. На практике
Django я использовал в NutriZone, ShareBooks и внутренних платформах. Это портфолио тоже на Django: вход через Telegram, видеокурсы, домашние задания, музыкальный плеер и автопостинг в канал.
6. Минусы
- Для крошечного микросервиса может быть избыточен — там легче FastAPI.
- Асинхронность пока неполная: большая часть ORM синхронна.
Итог
Django не идеален, но лучше многих балансирует простоту, мощь и продуктивность. Если нужно быстро запуститься и уверенно масштабироваться — я выбираю Django.