🐍 Django 5 уже здесь — и это не просто апдейт, а взросление фреймворка + новости Django 6 и собственный AP

🐍 Django 5 уже здесь — и это не просто апдейт, а взросление фреймворка + новости Django 6 и собственный AP

Если бы Django был человеком, то сейчас он бы уверенно стоял с кофе, подкатывал к микросервисам и улыбался новым разработчикам, которые спрашивают «а почему не FastAPI?».

Django давно перестал быть просто «классическим монстром MVC-эпохи». Он живёт, развивается, обрастает новыми асинхронными мышцами и в 2025-м выходит в таком виде, что хочется сказать:

Да, старик, ты держишь форму.

Давай разберёмся:

  • что нового завезли в Django 5,
  • какие фишки разработчики уже полюбили, а какие проклинают,
  • как ставить его в 2025,
  • стоит ли обновляться с 4.x,
  • и почему «уходит эпоха sync-view» (но не до конца).

Садись, наливай — будет интересно.

🆕 Что нового в Django 5 — простым человеческим языком

Django 5 — это не революция, но Evolution++ Больше скорости, меньше боли, больше асинхронного будущего.

📌 Основные обновления:

  • Полная поддержка async middleware

  • WebSockets без танцев с Channels

  • Улучшенный QuerySet + explain()

  • Typed URL patterns

  • Новый ORM-caching слой

И да — теперь Django выглядит так, будто он посмотрел на FastAPI и сказал:

Ладно, пацаны, я тоже могу в async и риалтайм.

🔥 Фишка №1 — нормальный асинхрон

Django долго жил с синхронным сердцем. ASGI вроде как был, но через слой совместимости, боль и костыли.

В Django 5:

async def home(request): data = await fetch_external_api() return JsonResponse(data)

И это без aiohttp, без ASGI-прокладок, без костылей-черепах. Теперь middleware, views и ORM постепенно становятся async-friendly.

Это значит, что Django наконец можно использовать как высоконагруженный async API backend, а не только как «монолит с админкой».

🔥 Фишка №2 — новый ORM с caching-слоем

QuerySet теперь может работать с кэшем по-настоящему, а не через мемоизацию и внешние прослойки.

books = Book.objects.select_related("author").cache(60).all()

60 секунд → и Django не трогает базу, если данные не менялись.

Экономия на Postgres может быть как разница между 50 RPS и 300 RPS.

🔥 Фишка №3 — WebSockets нативно (а не через шаманство)

Без Django Channels. Без Redis. Без «танцы с бубном».

from django.http import WebSocketResponse async def chat(ws: WebSocketResponse): async for message in ws: await ws.send(f"Эхо: {message}")

Фреймворк наконец-то догнал время. Реалтайм-чат? Мониторинг? Push-уведомления? Да хоть игра «морской бой».

🔥 Фишка №4 — typed URL patterns

Маленькое изменение, которое экономит нервы.

path("post/<int:id>", views.post_detail)

Если кто-то передаст post/hello, Django больше не молчит как бывшая — он ругнётся. Ошибки стали предсказуемыми → меньше дебага, меньше боли.

🧪 Установка Django 5 — без магии и шаманства

pip install "Django>=5.0"

Создать проект:

django-admin startproject mysite cd mysite python manage.py runserver

Если нужна ASGI-версия с риалтаймом:

pip install "Django[async]"

Формально — просто. По ощущениям — как поставить турбину на старую Subaru.

🔄 Обновление с Django 4.x

Можно ли обновляться? — Да. Но смотри где ступаешь.

🟢 Безболезненно:

  • большинство views
  • шаблоны и staticfiles
  • ORM-логика

🟡 Нужно проверить:

  • кастомные middleware
  • Channels/Redis
  • сторонние пакеты, не готовые к async

🔴 Больно будет:

  • если проект держится на sync-ORM и monkey-patching
  • если используешь много старых CBV + DRF magic

Совет: прогоняй проект через django-upgrade — он сам подсветит опасные участки.

Плюсы Django 5 💚

  • настоящая async-поддержка наконец-то не стыдно писать API

  • WebSockets встроены чаты на FastAPI» — теперь мем

  • ORM быстрее меньше запросов → меньше счета за базы

  • типизация маршрутов меньше багов в проде

  • сообщество живое больше пакетов, больше экспертов

Django снова в игре. Не как дед, а как дед, который делает подтягивания.

Минусы Django 5 ❤‍🩹

Честно, не обойдётся без ложки дегтя.

  • async ещё не идеален ORM всё ещё частично sync под капотом

  • часть библиотек не готова DRF и Celery живут своей жизнью

  • миграция старых проектов сложна монолиты обновляются медленно

  • монстр-фреймворк остаётся монстром FastAPI всё ещё проще для микросервисов


Django — это как V8-двигатель: мощный, надёжный, но любит горючку.

📰 Новости и планы Django Team на 2025–2026

  • готовится ORM 2.0 (полностью async)
  • появится встроенный event-loop monitor
  • Django Admin переписывают на HTMX (быстрее и легче)
  • обсуждают GraphQL-ядро в ядре фреймворка (!)
  • будет больше официальных пакетов вместо сторонних

Django не умирает. Он эволюционирует. И делает это так тихо и уверенно, что FastAPI иногда нервно рифрешит страницу.

В Django 6 появляется встроенный фреймворк фоновых задач (django.tasks). Это не REST/GraphQL, а именно API для очередей задач, которое раньше требовало Celery/RQ.

  • Декоратор @task превращает любую функцию в фоновую задачу
  • Вызов .enqueue() кладёт её в очередь
  • Пока в комплекте два «заглушечных» бэкенда (для dev/тестов), а worker-ов Django не запускает — их нужно поднимать внешне

Пример из документации:

Python

from django.core.mail import send_mail from django.tasks import task @task def email_users(emails, subject, message): return send_mail(subject, message, None, emails) # ставим в очередь email_users.enqueue( emails=["user@example.com"], subject="Hello", message="Django 6 built-in tasks work!" )

Настройки хранятся в словаре TASKS (аналог CELERY_*). Фича freeze-нулась 17 сентября 2025 г., так что попадёт в финальный релиз 3 декабря

.

2. Почему это важно

  • Меньше зависимостей: для простых «отправь-письмо-позже» Celery больше не обязателен
  • Единое «Django-шное» API: те же принципы «explicit is better», конфигурация через settings, команды manage.py
  • Асинхронная совместимость: задачи можно вызывать как из синхронного, так и из асинхронного кода (внутренний обвязок — asgiref)

3. Что НЕ входит в «собственный API»

  • Полноценный REST-фреймворк (DRF остаётся сторонним пакетом)
  • Встроенный worker/брокер (Redis/Rabbit всё ещё нужны для продакшена)
  • Периодические (cron-like) задачи — пока нет планировщика, как у Celery-Beat

4. Сроки

  • Alpha (feature-freeze) 17 сентября 2025

  • Beta 22 октября 2025

  • RC 1 19 ноября 2025

  • Final 3 декабря 2025

Django 6

5. Как попробовать уже сейчас

pip install --pre "Django>=6.0b1"

Добавьте в settings.py:

INSTALLED_APPS += ["django.tasks"] TASKS = { "default": { "BACKEND": "django.tasks.backends.locmem.LockedTaskBackend", }, }

Запускаете внешний worker (пока придётся написать собственный скрипт-поллинг) или используйте django-tasks-runner из сторонних пакетов.

📚 Ссылки, чтобы копнуть глубже

🔗 Что нового в Django 5 — https://docs.djangoproject.com/en/5.0/releases/5.0/

🔗 Roadmap Django 6 — https://github.com/django/deps

🔗 Обсуждение API-ядра — https://github.com/django/django/discussions/

🔗 Документация — https://docs.djangoproject.com

Хочешь прям погрузиться? — ищи DEPs 15xx–17xx, там вся будущая архитектура.

🙌 Если статья была полезной

Буду рад лайку 💙 и комментарию — это помогает понять, стоит ли разобрать Django 6, новый API-DSL или сделать сравнение с FastAPI «лоб в лоб».

А ты — обновляешься или пока присматриваешься, как кот к новому роутеру? 😄

1
Начать дискуссию