5 замечательных новых функций в Django 5

автор vadim


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

Топ-5 новых функций в Django 5

  1. Поля формы проще визуализировать
  2. Поля модели для вычислений и генерируемые столбцы
  3. Выбор полей легче написать
  4. Больше декораторов асинхронного представления
  5. Обработка исключений для асинхронных отключений

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

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

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

С помощью групп полей вы можете визуализировать все это:


{{ form.username.label_tag }}
{% if form.username.help_text %}
<div class="helptext" id="{{ form.username.auto_id }}_helptext">
    {{ form.username.help_text|safe }}
</div>
{% endif %}
{{ form.username.errors }}
{{ form.username }}

… просто так:


{{ form.name.as_field_group }}

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

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

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

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

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

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

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

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

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


HQ_LOCATIONS = [
    ("United States", [("nyc", "New York"), ("la", "Los Angeles")]),
    ("Japan", [("tokyo", "Tokyo"), ("osaka", "Osaka")]),
    ("virtual", "Anywhere"),
]

В Django 5 вы можете использовать гораздо более краткое объявление, используя сопоставления словарей:


HQ_LOCATIONS = {
    "United States": {"nyc": "New York", "la": "Los Angeles"},
    "Japan": {"tokyo": "Tokyo", "osaka": "Osaka"},
    "virtual": "Anywhere",
}

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

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

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

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

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

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

Дальше читайте это:

  • Лучшее программное обеспечение с открытым исходным кодом 2023 года
  • Сертификаты программирования все еще имеют значение?
  • Облачные вычисления больше не являются пустяком
  • Что такое генеративный ИИ? Искусственный интеллект, который создает
  • Программирование с помощью ИИ: советы и лучшие практики от разработчиков
  • Почему Wasm — это будущее облачных вычислений

Related Posts

Оставить комментарий