В Django 5 появилось 5 новых функций

Django, веб-фреймворке Python, появились пять новых функций. Среди них: упрощенная визуализация полей и форм, поля модели для вычислений и генерируемые столбцы, больше декораторов асинхронного представления, обработка исключений для асинхронных отключений и другие.

1. Поля формы проще визуализировать

Поля формы в Django состоят из нескольких элементов: описательной метки, текста справки, метки ошибки и самого поля. Если у вас есть форма с несколькими такими полями, размещение их вручную может оказаться утомительным.

Чтобы исправить это, Django 5 предлагает новый метод группирования полей формы . При использовании в шаблоне .as_field_groupметод автоматически отображает все элементы в группе полей в соответствии с шаблоном, который вы можете настроить.

Было:

Image

Стало:

Image 2

Форму можно настраивать — можно заменить шаблон по умолчанию для групп полей во всем приложении или настроить его для каждого поля или даже для каждого запроса.

2. Поля модели для вычислений и генерируемые столбцы

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

Django 5 теперь позволяет определять поля в моделях с параметром базы данных по умолчанию , который позволяет вам предоставить значение по умолчанию, вычисленное базой данных. Например, DateTimeFieldможно использовать Now()по умолчанию.

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

Еще одно удобное дополнение Django 5.0 в этом направлении — GeneratedField — новый тип поля, значение которого всегда генерируется из значений других полей. Результаты могут либо сохраняться в базе данных при записи или обновлении строки («сохраненное» поле), либо вычисляться только при чтении строки («виртуальное» поле).

Также обратите внимание, что GeneratedFields может использовать в качестве входных данных только другие поля внутри той же модели. Вы также не можете использовать в качестве источника другие сгенерированные поля, только фактические поля.

3. Выбор полей легче написать

В предыдущих версиях Django, когда вы хотели перечислить варианты, доступные объектам Field.choicesи ChoiceField.choices, вам приходилось создавать неуклюжую композицию из двух кортежей или Enumerationподклассов:

Image 4

Используя сопоставление словарей, получаем это

Image 5

Это упрощает кодирование выбора в виде литералов, а также немного упрощает его программную генерацию.

4. Множество других декораторов асинхронного представления.

Django впервые добавил поддержку асинхронных механизмов Python в версии 3.0, но не каждая часть Django получила асинхронную поддержку с самого начала. Он был добавлен по слоям: поддержка асинхронных представлений добавлена ​​в версии 4.0, а поддержка ORM появится в будущем выпуске.

Поскольку Django постепенно добавляет поддержку асинхронности, многие декораторы ранее не поддерживали перенос асинхронных представлений. Ситуация изменилась с версией 5, в которой теперь гораздо больше декораторов могут обертывать асинхронные представления . Среди наиболее полезных — те, которые обеспечивают защиту представлений от CSRF (подделки межсайтовых запросов).

5. Обработка исключений при асинхронных отключениях

При асинхронных соединениях всегда существует риск того, что длительное соединение будет закрыто до того, как Django вернет ответ. Раньше не было встроенного механизма очистки при отмене асинхронного соединения. Django 5 вызывает соответствующее исключение , asyncio.CancelledErrorкоторое вы можете перехватить по мере необходимости.

Читайте также
AdonisJS v6: Полный переход на современные стандарты JavaScript
AdonisJS v6: Полный переход на современные стандарты JavaScript
AdonisJS v6: Полный переход на современные стандарты JavaScript

Переход на современные стандарты Ключевое изменение в AdonisJS v6 – полная поддержка современных стандартов JavaScript: ECMAScript Modules (ESM) и TypeScript. Это обеспечивает совместимость с последними версиями пакетов и повышает безопасность благодаря доступу к актуальным исправлениям уязвимостей. Приложения AdonisJS v6 теперь по умолчанию используют TypeScript и ESM, однако разработчики по-прежнему могут устанавливать и применять пакеты, написанные […]

SortableJS переносит списки с перетаскиванием в Microsoft Blazor
SortableJS переносит списки с перетаскиванием в Microsoft Blazor
SortableJS переносит списки с перетаскиванием в Microsoft Blazor

Разработчики преобразовали SortableJS, инструмент JavaScript для создания списков с возможностью перетаскивания, в компонент Blazor для разработки веб-приложений Microsoft, переименовав его в Blazor Sortable.

Сжатие и распаковка в браузере с помощью Compression Streams API
Сжатие и распаковка в браузере с помощью Compression Streams API
Сжатие и распаковка в браузере с помощью Compression Streams API

С API веб-приложениям больше не нужно предоставлять собственную библиотеку сжатия или распаковки.

Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей
Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей
Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей

Ваш код отвечает за работу двигателей, оружия, радаров и средств связи кораблей — от крошечных ракет до огромных крейсеров.