3.4 Использование шаблонов Jinja и форм в FastAPI
6 из 6 шагов пройдено
1 из 1 баллa  получен

Шаблоны в FastAPI

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

Шаблонирование - это процесс отображения данных, полученных от API, в различных форматах. Шаблоны действуют как компонент интерфейса в веб-приложениях.

Понимание Jinja

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

Механизм шаблонов Jinja использует фигурные скобки { }, чтобы отличить свои выражения и синтаксис от обычного HTML, текста и любой другой переменной в файле шаблона.

Синтаксис {{ }} называется блоком переменных.

Три общих синтаксических блока, используемых в языке шаблонов Jinja, включают следующее:

  • {% … %} – Этот синтаксис содержит управляющие структуры, такие как if/else, циклы и макросы.
  • {{ message.text }} – Этот синтаксис используется для вывода значений переданных ему выражений.
  • {# Simple comment #} – Этот синтаксис используется при написании комментариев и не отображается на веб-странице.

Переменные шаблона Jinja могут относиться к любому типу или объекту Python, если их можно преобразовать в строки. Тип модели, списка или словаря можно передать шаблону и отобразить его атрибуты, поместив эти атрибуты во второй блок, указанный ранее.

 

Фильтры

Несмотря на сходство синтаксиса Python и Jinja, такие модификации, как объединение строк, установка первого символа строки в верхний регистр и т. д., не могут быть выполнены с использованием синтаксиса Python в Jinja. Поэтому для выполнения таких модификаций у нас в Jinja есть фильтры. Фильтр отделяется от переменной вертикальной чертой (|) и может содержать необязательные аргументы в круглых скобках. Фильтр определяется в этом формате:

{{ variable | filter_name(*args) }}

Если нет аргументов, определение становится следующим:

{{ variable | filter_name }}

Давайте рассмотрим некоторые распространенные фильтры:

Переменная фильтра по умолчанию используется для замены вывода переданного значения, если оно оказывается None:

{{ message.text | default('This is a simple message') }}

Этот фильтр используется для отображения необработанного вывода HTML:

{{ "<title>My Application</title>" | escape }}

И мы получим не обработанный HTML код - <title>My Application</title>

Фильтры преобразования, они включают фильтры int и float, используемые для преобразования из одного типа данных в другой:

{{ 3.142 | int}} -> 3

{{ 31 | float }} -> 31.0

Фильтр объединения используется для объединения элементов списка в строку, как в Python:

{{ ['My', 'first', 'project', 'FastAPI'] | join(' ') }}

И мы получим результат как строку "My first project FastAPI"

Фильтр длины используется для возврата длины переданного объекта. Он выполняет туже роль, что и len() в Python:

Message count: {{ message | length }}

Полный список фильтров и дополнительные сведения о фильтрах в Jinja вы можете посмотреть в документации https://jinja.palletsprojects.com/en/latest/templates/.


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

Просто и лаконично объяснили что такое фильтры, Спасибо!