Встроенные типы 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 (Optional[str]) –
- line_comment_prefix (Optional[str]) –
- trim_blocks (bool) –
- lstrip_blocks (bool) –
- newline_sequence (te.Literal['\n', '\r\n', '\r']) –
- keep_trailing_newline (bool) –
- extensions (Sequence[Union[str, Type[Extension]]]) –
- optimized (bool) –
- undefined (Type[jinja2.runtime.Undefined]) –
- finalize (Optional[Callable[[...], Any]]) –
- autoescape (Union[bool, Callable[[Optional[str]], bool]]) –
- loader (Optional[BaseLoader]) –
- cache_size (int) –
- auto_reload (bool) –
- bytecode_cache (Optional[BytecodeCache]) –
- enable_async (bool) –
-
class jinja2.nativetypes.NativeTemplate([options]) -
- Параметры
-
- source (Union[str, jinja2.nodes.Template]) –
- 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 (Optional[str]) –
- line_comment_prefix (Optional[str]) –
- trim_blocks (bool) –
- lstrip_blocks (bool) –
- newline_sequence (te.Literal['\n', '\r\n', '\r']) –
- keep_trailing_newline (bool) –
- extensions (Sequence[Union[str, Type[Extension]]]) –
- optimized (bool) –
- undefined (Type[jinja2.runtime.Undefined]) –
- finalize (Optional[Callable[[...], Any]]) –
- autoescape (Union[bool, Callable[[Optional[str]], bool]]) –
- enable_async (bool) –
- Тип возвращаемого значения
-
Any
-
render(*args, **kwargs) -
Рендеринг шаблона для получения значения типа Python. Если результатом является единственный узел, возвращается его значение. В противном случае узлы конкатенируются как строки. Если результат может быть распарсен с помощью
ast.literal_eval(), возвращается распарсенное значение. В противном случае возвращается строка.- Параметры
-
- args (Any) –
- kwargs (Any) –
- Тип возвращаемого значения
-
Any
© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://jinja.palletsprojects.com/en/3.0.x/nativetypes/