В Django 6.0 есть кое-что для вас. Давайте рассмотрим самые важные новые функции и изменения, о которых вам нужно знать.

Сообщество Django представляет множество мощных нововведений, а также некоторые критические изменения. Ожидаемый выпуск запланирован на декабрь 2025 года.
Что нового в Django 6.0
Изменений в версии 6.0 много... В этой статье мы подробно разберем нововведения Django 6.0 и выделим критические изменения, нарушающие обратную совместимость, на которые стоит обратить внимание.

Политика безопасности контента (CSP): Встроенные промежуточное ПО (middleware) и настройки для заголовков CSP с поддержкой nonce.
Одним из самых значительных нововведений в Django 6.0 является встроенная поддержка Политики безопасности контента. Используйте ContentSecurityPolicyMiddleware
и применяйте nonce-значения через контекстный процессор csp()
.
Формируемый заголовок Content-Security-Policy
from django.utils.csp import CSP
SECURE_CSP = {
"default-src": [CSP.SELF],
"script-src": [CSP.SELF, CSP.NONCE],
"img-src": [CSP.SELF, "https:"],
}
Это значительно упрощает защиту вашего веб-приложения от инъекций скриптов/стилей, межсайтового скриптинга (XSS) и связанных с ними уязвимостей.
Совет: При обновлении проверьте встроенные скрипты и стили и настройте разрешённые источники с помощью правил CSP.
Частичные шаблоны (Template Partials): Переиспользуемые фрагменты шаблонов
Django 6 представляет частичные шаблоны (partials) — это переиспользуемые именованные блоки внутри шаблонов. Вы определяете их с помощью тега {% partialdef %}
и включаете с помощью {% partial %}
.
Это позволяет вам модульно организовывать ваши шаблоны, избегая необходимости разбивать их на множество мелких файлов. Также вы можете ссылаться на частичные шаблоны, используя синтаксис template_name#partial_name
.
Фреймворк Фоновых Задач (Background Tasks Framework): Новый декоратор @task
и система очередей для асинхронных задач.
Ранее Django не включал встроенную систему задач или постановки заданий в очередь. Теперь в Django 6.0 вы получаете нативный фреймворк задач с использованием декоратора @task
.
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)
Примечание: Django отвечает за определение и планирование задач, однако для их непосредственного выполнения вам по-прежнему потребуется внешний воркер или планировщик.
Как обновить Django до новой версии
Перед обновлением... желательно устранить все предупреждения о устаревании, которые выдает ваш текущий проект.
Django 6.0 поддерживает Python 3.12 и 3.13. Настоятельно рекомендуется выполнить обновление.
python -Wa manage.py test
Если вы установили Django с помощью pip, используйте флаг --upgrade
:
Windows:
uv add django --pre
# Тест на Windows
uv run python -Wa manage.py test
После запуска тестов исправьте все неудачные проверки. Пока записи о выпуске свежи в вашей памяти. Это также может быть подходящим моментом, чтобы воспользоваться преимуществами новых функций в Django, проведя рефакторинг вашего кода для устранения предупреждений об устаревании…
Критические изменения и удалённые возможности
Обновление до Django 6.0 не совсем простое. Вот ключевые критические изменения, на которые стоит обратить внимание:
Изменения в API базы данных:
return_insert_columns
переименован вreturning_columns
Поддержка Python:
Требуется Python 3.12 и выше
Поддержка Python 3.11 и более старых версий прекращена
Поддержка MariaDB:
Прекращена поддержка MariaDB 10.5
DEFAULT_AUTO_FIELD:
Теперь по умолчанию используется
BigAutoField
, если значение не задано явно
Пользовательские ORM-выражения:
Метод
as_sql()
теперь должен возвращать кортеж(sql, params_tuple)
вместо списка
Почтовый API:
Позиционные аргументы в
django.core.mail
больше не поддерживаются — используйте именованные
Удалённые внутренние компоненты:
Устаревшие внутренние компоненты email
DjangoDivFormRenderer
Поддержка позиционных аргументов в
BaseConstraint
удалена
Изменение схемы URL:
Схема по умолчанию для
urlize
/urlizetrunc
теперь HTTPS (резервный вариант с HTTP удалён)
Заключение: Более мощный и современный Django
Django 6.0 знаменует собой значительный шаг вперёд, укрепляя свои позиции в качестве фреймворка высшего класса для создания надёжных, масштабируемых и современных веб-приложений.
Если вы используете Django 5.x (или более раннюю версию), начинайте подготовку уже сейчас: проведите ваши проверку ваших пользовательских ORM-выражений и убедитесь в совместимости ваших зависимостей с Python 3.12.
Более подробно можете прочитать здесь - Django 6.0 Release Notes, Content Security Policy (CSP) , partials, and Task framework
Какая функция в Django 6.0 вам нравится больше? Поделитесь своим мнением в комментариях.