stringtranslate.com

Джинджа (движок шаблонов)

Jinja — это движок веб-шаблонов для языка программирования Python . Он был создан Армином Ронахером и распространяется по лицензии BSD . Jinja похож на механизм шаблонов Django , но предоставляет выражения, подобные Python, при этом гарантируя, что шаблоны оцениваются в «песочнице» . Это текстовый язык шаблонов, поэтому его можно использовать для создания любой разметки, а также исходного кода.

Механизм шаблонов Jinja позволяет настраивать теги , [3] фильтры (для форматирования или преобразования значений [4] ), тесты (для оценки условий [4] ) и глобальные переменные . [5] Кроме того, в отличие от шаблонизатора Django, Jinja позволяет разработчику шаблонов вызывать функции с аргументами объектов. Jinja — это шаблонизатор Flask по умолчанию [6] , а также он используется Ansible , [7] Trac и Salt . [8] Он также используется для создания макросов SQL , например, для использования с dbt . [9]

Функции

Некоторые особенности Jinja: [10]

Jinja, как и Smarty , также поставляется с простой в использовании системой фильтров, аналогичной конвейеру Unix .

Синтаксис

Синтаксис вывода вывода в Jinja использует, например, двойные фигурные скобки {{ Hello, World! }}.

Операторы, которые устанавливают переменные в jinja или не имеют вывода, можно обернуть в {%и %}с помощью setключевого слова. Например, устанавливает вызываемую переменную со значением 42.{% set foo = 42 %}foo

Как и выше, комментарии в джиндже можно писать с использованием знака числа ( #) вместо процента ( %), например {# helpful comment #}.

Синтаксис создания фильтра в Jinja — это , например, вертикальная черта ( ) . Переменная может иметь несколько фильтров, например ). [4]|{{ variable|filter }}{{ variable|filter|filter }}

Синтаксис создания теста в Jinja — это ключевое слово, isа также условия оценки валидности теста, например ). [4]{% if variable is divisibleby 10 %}do something{% endif %}

Циклы for можно использовать для перебора последовательностей, сохраняя при этом свойства их объектов. В следующем примере демонстрируется перебор списка пользователей с полями usernameи .password

{%  для  пользователя  в  пользователях  %} {{ user.username }} {{ user.password }} {% endfor %}        

Хотя breakи continueне разрешены внутри циклов, последовательности можно фильтровать.

Пример

Вот небольшой пример файла шаблона example.html.jinja: [11]

<!DOCTYPE html> < html >  < head >  < title > {{  переменная | escape  }} </ title >  / head >  < body >  {% - for  item  в  item_list  %}  {{  item  }}{%  if  not  Loop .last  %} , {%  endif  %}  {% - endfor  %}  < / тело > </ html >

и код шаблона:

из  jinja2  импортируйте  шаблон с  открытым ( 'example.html.jinja' )  как  f :  tmpl  =  Template ( f . read ()) print ( tmpl . render (  variable  =  'Value with <unsafe> data' ,  item_list  =  [ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ] ))

Это создает строку HTML:

<!DOCTYPE html> < html >  < head >  < title > Значение с < небезопасно > данные </ title >  </ head >  < body > 1, 2, 3, 4, 5, 6 </ тело > </ html >

Обратите внимание на знак минуса ( -) после тега {%: если вы добавите знак минуса ( -) в начало или конец блока (например, тег For), комментарий или выражение переменной, пробелы до или после этого блока будут удаленный. [12]

Рекомендации

  1. ^ "История выпусков Jinja2" . Проверено 24 июня 2020 г.
  2. ^ «Выпуск 3.1.4» . 5 мая 2024 г. Проверено 23 мая 2024 г.
  3. ^ «Расширения». Документация Jinja2 (2.8-dev) . Проверено 26 мая 2015 г.
  4. ^ abcd «Встроенные фильтры и тесты Jinja (например, фильтры Django)». www.webforefront.com . Проверено 14 августа 2023 г.
  5. ^ «Расширения». Документация Jinja2 (2.8-dev) . Проверено 26 мая 2015 г.
  6. ^ ДюПлен, Р. (2013). Веб-разработка Instant Flask. Пакт Паблишинг. п. 30. ISBN 978-1-78216-963-5. Проверено 26 мая 2015 г.
  7. ^ «Шаблоны (Jinja2) — Документация Ansible» .
  8. ^ «Понимание Джинджи». docs.saltproject.io .
  9. ^ Джинджа и макросы | Центр разработчиков dbt
  10. ^ «Добро пожаловать | Jinja2 (движок шаблонов Python)» . palletsprojects.com/p/jinja .
  11. ^ Роначер, Армин. «Документация дизайнера шаблонов». Документация Джинджа (3.0.x) . Проверено 9 января 2024 г. Шаблон Jinja не обязательно должен иметь определенное расширение: вполне подойдет .html, .xml или любое другое расширение.
  12. ^ «Документация по дизайнеру шаблонов — Документация Jinja (3.0.x)» . jinja.palletsprojects.com . Проверено 9 января 2024 г.

Внешние ссылки