О нововведениях и изменениях в грядущей мажорной версии каркаса.
Не так долго осталось ждать декабря, на который запланирован выпуск новой версия каркаса для веб-разработки Django. Уже сейчас можно ознакомиться с альфа версией готовящегося выпуска.

Рассмотрим, чего нам ждать от новинки.

На заметку
Прежде всего стоит отметить, что линейка 2.2 была последней поддерживавшей Питон 3.5, линейка 3 потребует Питон 3.6+ (например, в прошлогодней Ubuntu 18.04 LTS версия 3.6 ставится по умолчанию). Авторам подключаемых приложений рекомендуется отказаться от поддержки версий Джанго, предшествующих 2.2.

Некоторые изменения:

  • ASGI. Наряду с поддержкой WSGI Джанго теперь будет из коробки поддерживать ASGI для приложений, использующих асинхронный код.
  • MariaDB. Джанго теперь поддерживает указанную СУБД, начиная с версии 10.1, официально.
  • Перечисления для choices. Базовый класс Choices и его наследники (TextChoices, IntegerChoices) помогут удобно определять варианты для Field.choices. Определять нужно будет примерно также, как это делается в django-etc.
  • Права пользователя. Права, доступные пользователю непосредственно, теперь можно получить методом User.get_user_permissions().
  • PostgreSQL. Исключающие ограничения. Поддержка данного типа ограничений стала возможной благодаря добавлению нового класса — ExclusionConstraint.
  • PostgreSQL. Конкурентные операции над индексами. Добавлены классы AddIndexConcurrently и RemoveIndexConcurrently, позволяющие добавлять и удалять индексы в конкурентном режиме (без блокировок).
  • Хеш функции БД. Добавлена поддержка функций MD5, SHA1, SHA224, SHA256, SHA384, SHA512.
  • Загрузка файлов. Настройка FILE_UPLOAD_PERMISSION теперь выставлена в 0o644.
  • Заголовки безопасности. Настройки X_FRAME_OPTIONS и SECURE_CONTENT_TYPE_NOSNIFF теперь имеют более строгие значения по умолчанию.

И ещё немало других интересных штук в области моделей, безопасности, инструментов для тестирования.

Обратите внимание на обратно несовместимые изменения, если вы:
  • Поддерживаете собственный бекенд для БД, использующий DatabaseOperations, DatabaseFeatures, DatabaseIntrospection. Некоторые атрибуты сменили имена.
  • До сих пор используете совместимые с Python 2 приватные API из django.utils и django.test.utils. Функции совместимости теперь убраны.
  • Используете PostgreSQL 9.4 и Oracle 12.1. Их поддержка окончена.

На заметку
С более полным списком изменений, включая перечисления более неподдерживаемых и устранённых функций, можно ознакомиться на официальном сайте.


Категории

Окружение
Проект

На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.