Django 4.1, новая версия основного веб-фреймворка на основе Python, добавляет такие возможности, как асинхронные обработчики и интерфейс ORM, но также вносит некоторые обратно несовместимые изменения.
Доступ к Django 4.1, представленному 3 августа, можно получить на веб-сайте проекта Django. В новой версии представлены асинхронные обработчики для представлений на основе классов; Подклассы представлений теперь могут определять обработчики асинхронных методов HTTP, согласно примечаниям к выпуску.
Для асинхронного объектно-реляционного сопоставления QuerySet
теперь предоставляет асинхронный интерфейс для всех операций доступа к данным. Новый интерфейс позволяет разработчикам писать асинхронный код без необходимости писать операции ORM в sync_to_async()
. На этом этапе базовые операции базы данных остаются синхронными.
Django 4.1 поддерживает Python 3.8, Python 3.9 и Python 3.10, но только последние версии каждой серии. Также в Джанго 4.1:
Check
,unique
иexclusion
ограничения, определенные вMeta.constraints
теперь проверяются во время проверки модели.- Новый
<div>
Доступны шаблоны форм на основе текста, которые помогут пользователям, у которых есть программы чтения с экрана и другие вспомогательные технологии. - А
CSRF_COOKIE_MASKED
Переходная настройка позволяет разработчикам указать, следует ли маскировать файл cookie CSRF (подделка межсайтового запроса). - А
SECRET_KEY_FALLBACKS
Настройка позволяет предоставить список значений для проверки секретного ключа. - Для шаблонов HTML
<script>
элементid
Атрибут больше не требуется при обертыванииjson_script
шаблон. - Для тестирования,
DiscoverRunner
теперь поддерживает параллельный запуск тестов в Windows, macOS и любых других системах, где по умолчаниюmultiprocessing
метод запускаspawn
.
Был внесен ряд обратно несовместимых изменений, в том числе некоторые из которых повлияли на внутренний API базы данных. В примечаниях к выпуску подробно описаны конкретные изменения, такие как BaseDatabaseFeatures.has_case_insensitive_like
меняется с True
к False
чтобы отразить поведение большинства баз данных.
Поддержка исходной версии PostgreSQL 10 заканчивается в ноябре. Django 4.1 поддерживает PostgreSQL 11 и выше. Кроме того, поскольку поддержка MariaDB 10.2 завершилась в мае, Django 4.1 поддерживает MariaDB 10.3 и выше.
Еще одно изменение: чтобы унифицировать поведение с отношениями «многие ко многим» для несохраненных экземпляров модели, обратный внешний ключ теперь вызывает ошибку ValueError при вызове связанных менеджеров для несохраненных объектов.