Django 6.0 вышел 3 декабря 2025 года — и это не тот случай, когда релиз можно пропустить, надеясь, что «ничего особо не поменялось». Наоборот: Django уверенно двигается в сторону более безопасного, современного и структурированного мира Python, где асинхронность, CSP и фоновые задачи уже не «допы», а ожидаемая часть фреймворка.
Этот релиз ощущается как шаг к более зрелой платформе, которая переосмысливает старые решения и закрывает многолетние долги.
🛡 Django получил встроенный CSP — и это гигантский плюс для безопасности
Content Security Policy раньше приходилось прикручивать вручную или через сторонние приложения. Теперь в Django есть полноценно встроенный движок CSP:
- 🧱 ContentSecurityPolicyMiddleware — добавляет CSP в заголовки.
- 🔑 nonce-поддержка через csp() — критично для защиты от XSS.
- ⚙️ SECURE_CSP и SECURE_CSP_REPORT_ONLY — компактные словари, удобные как настройки.
Пример:
SECURE_CSP = {
"default-src": [CSP.SELF],
"script-src": [CSP.SELF, CSP.NONCE],
"img-src": [CSP.SELF, "https:"],
}
Теперь можно объявлять политику в стиле Python, а Django сам соберёт правильный заголовок:
default-src 'self'; script-src 'self' 'nonce-...'; img-src 'self' https:
Это повышает не только безопасность, но и прозрачность конфигурации — чувствуется аккуратная инженерная работа.
⚙️ Partials в шаблонах — мини-компоненты без оверхеда
Django Templates всегда были немного консервативны. В 6.0 они стали на шаг ближе к компонентному подходу:
- 🧩 {% partialdef %} — определение фрагмента;
- 🚀 {% partial %} — вызов фрагмента;
- 🔗 template.html#fragment — доступ к partial через стандартные функции загрузки.
Это не полноценные компоненты как в Jinja2, HTMX или Vue, но правильное минималистичное решение для DRY, которому не хватает Django-шаблонам уже лет десять.
Теперь маленькие фрагменты не нужно выносить в отдельные файлы.
Просто оформляешь partial — и используешь как мини-функцию.
🔄 Встроенные фоновые задачи — Django наконец делает это нативно
Вот что удивляет: Django долго игнорировал фоновые задачи, отдавая эту роль Celery. В Django 6.0 появился встроенный Task Framework:
- 🏷️ @task — декоратор для объявления задач;
- 📬 .enqueue() — отправка в очередь;
- 📦 TASKS — конфигурация бэкенда;
- 🧰 два встроенных простых backend’а — для разработки и тестов.
Пример:
@task
def email_users(emails, subject, message):
return send_mail(subject, message, None, emails)
email_users.enqueue(
emails=["user@example.com"],
subject="Привет!",
message="У вас новое сообщение",
)
⚠️ Но важный момент: Django не запускает воркеры сам, что честно отражено в релизе.
Нужны внешние процессы — системный сервис, Celery-like работник или ваш собственный runner.
И это отличное архитектурное решение:
- Django обеспечивает контракт и стандартизацию API,
- инфраструктуру выполнения можно выбирать самому.
✉️ Новый e-mail API — меньше боли, больше Pythonic
Python давно обновил свой email API, но Django оставался в прошлом.
В 6.0 он догнал стандарт:
- теперь используется email.message.EmailMessage;
- улучшена Unicode-совместимость;
- устаревшие MIME-классы — убраны;
- attach() теперь принимает полноценный MIMEPart.
Это делает работу с письмами менее запутанной и снимает огромное количество edge-case'ов, связанных с кодировками.
🧱 Чистка наследия: Python < 3.12, MariaDB 10.5, мелкие устаревшие фичи
Django решительно сбрасывает балласт:
- ❌ поддержка Python 3.10 и 3.11 удалена
- ❌ MariaDB 10.5 — больше не поддерживается
- ⚙️ DEFAULT_AUTO_FIELD теперь по умолчанию BigAutoField
- смена старых API ORM и email
- новые требования к кастомным expressions (возвращать tuple)
Это болезненный, но необходимый шаг — постепенная эволюция платформы требует перемен. Устаревшие зависимости тормозят развитие фреймворка.
✨ Маленькие изменения, которые приятно чувствовать в работе
Такие релизы раскрываются в деталях:
- 🧭 Font Awesome 6.7 в админке — визуально свежее;
- 🔐 PBKDF2 теперь использует 1 200 000 итераций — выше безопасность;
- 🗺️ GIS теперь умеет Rotate и проверку M-измерения;
- 📚 Lexeme в PostgreSQL FTS — намного удобнее работать с поисковыми термами;
- 🌀 AsyncPaginator — привет, асинхронные API!
- 🧮 StringAgg и AnyValue стали кросс-бэкендовыми;
- 🗄 collectstatic теперь чище и менее «шумный».
Это те мелочи, которые делают Django современным фреймворком, а не реликтом эпохи Python 2.
🧭 Мой взгляд: Django 6.0 — это тихая революция
Этот релиз не выглядит громким — нет «нового ORM» или «революционной async-модели».
Но его влияние на экосистему огромно.
Почему Django 6.0 важен:
- 🧱 CSP — шаг в сторону встроенной безопасности уровня фреймворка.
- 🧩 Partials — долгожданная эволюция шаблонов.
- 🔄 Tasks — фактическое начало встроенной поддержки фоновых процессов.
- 📨 Новый e-mail API — упрощение кода и стабильность.
- 🐍 Ориентация на Python 3.12+ — современный язык, меньше костылей.
Django словно избавляется от старых ограничений и готовит почву для следующего этапа — более асинхронного, более типизированного, более безопасного и более структурного веб-фреймворка.
Это релиз, который не кричит — но меняет будущее.
🔗 Источники
- Официальные релиз-ноты Django 6.0: https://docs.djangoproject.com/en/6.0/releases/6.0/