Spec-Zone.ru › Jinja 3.1

Нативные типы Python

По умолчанию Environment преобразует шаблоны в строки. С NativeEnvironment рендеринг шаблона производит нативный тип Python. Это полезно, если вы используете Jinja вне контекста создания текстовых файлов. Например, ваш код может иметь промежуточный шаг, где пользователи могут использовать шаблоны для определения значений, которые затем будут переданы в традиционную среду строк.

Примеры

Сложение двух значений приводит к целому числу, а не строке с числом:

>>> env = NativeEnvironment()
>>> t = env.from_string('{{ x + y }}')
>>> result = t.render(x=4, y=2)
>>> print(result)
6
>>> print(type(result))
int

Рендеринг синтаксиса списка производит список:

>>> t = env.from_string('[{% for item in data %}{{ item + 1 }},{% endfor %}]')
>>> result = t.render(data=range(5))
>>> print(result)
[1, 2, 3, 4, 5]
>>> print(type(result))
list

Рендеринг чего-то, что не похоже на литерал Python, производит строку:

>>> t = env.from_string('{{ x }} * {{ y }}')
>>> result = t.render(x=4, y=2)
>>> print(result)
4 * 2
>>> print(type(result))
str

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

>>> class Foo:
...     def __init__(self, value):
...         self.value = value
...
>>> result = env.from_string('{{ x }}').render(x=Foo(15))
>>> print(type(result).__name__)
Foo
>>> print(result.value)
15

API

class jinja2.nativetypes.NativeEnvironment([options])

Среда, которая преобразует шаблоны в нативные типы Python.

Параметры:
  • block_start_string (str) –
  • block_end_string (str) –
  • variable_start_string (str) –
  • variable_end_string (str) –
  • comment_start_string (str) –
  • comment_end_string (str) –
  • line_statement_prefix (str | None) –
  • line_comment_prefix (str | None) –
  • trim_blocks (bool) –
  • lstrip_blocks (bool) –
  • newline_sequence (te.Literal['\n', '\r\n', '\r']) –
  • keep_trailing_newline (bool) –
  • extensions (Sequence[str | Type[Extension]]) –
  • optimized (bool) –
  • undefined (Type[Undefined]) –
  • finalize (Callable[[...], Any] | None) –
  • autoescape (bool | Callable[[str | None], bool]) –
  • loader (BaseLoader | None) –
  • cache_size (int) –
  • auto_reload (bool) –
  • bytecode_cache (BytecodeCache | None) –
  • enable_async (bool) –
class jinja2.nativetypes.NativeTemplate([options])
Параметры:
  • source (str | Шаблон) –
  • block_start_string (str) –
  • block_end_string (str) –
  • variable_start_string (str) –
  • variable_end_string (str) –
  • comment_start_string (str) –
  • comment_end_string (str) –
  • line_statement_prefix (str | None) –
  • line_comment_prefix (str | None) –
  • trim_blocks (bool) –
  • lstrip_blocks (bool) –
  • newline_sequence (te.Literal['\n', '\r\n', '\r']) –
  • keep_trailing_newline (bool) –
  • extensions (Sequence[str | Тип[Расширение]]) –
  • optimized (bool) –
  • undefined (Тип[Undefined]) –
  • finalize (Вызываемый[[...], Любой] | None) –
  • autoescape (bool | Вызываемый[[str | None], bool]) –
  • enable_async (bool) –
Тип возвращаемого значения:

Любой

render(*args, **kwargs)

Рендеринг шаблона для получения типа данных Python. Если результатом является единственный узел, возвращается его значение. В противном случае узлы объединяются в строки. Если результат может быть распарсен с помощью ast.literal_eval(), возвращается распаршенное значение. В противном случае возвращается строка.

Параметры:
  • args (Любой) –
  • kwargs (Любой) –
Тип возвращаемого значения:

Любой

© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://jinja.palletsprojects.com/en/3.1.x/nativetypes/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API