ネイティブPythonタイプ—Jinjaドキュメント

提供:Dev Guides
Jinja/docs/3.0.x/nativetypes
移動先:案内検索

ネイティブPythonタイプ

デフォルトの Environment は、テンプレートを文字列にレンダリングします。 NativeEnvironment を使用して、テンプレートをレンダリングすると、ネイティブPythonタイプが生成されます。 これは、テキストファイルを作成するコンテキスト外でJinjaを使用している場合に役立ちます。 たとえば、コードに中間ステップがあり、ユーザーがテンプレートを使用して値を定義し、それを従来の文字列環境に渡すことができます。

2つの値を加算すると、数値のある文字列ではなく整数になります。

>>> 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_stringstr )–
  • block_end_stringstr )–
  • variable_start_stringstr )–
  • variable_end_stringstr )–
  • comment_start_stringstr )–
  • comment_end_stringstr )–
  • line_statement_prefixオプション [ str ] )–
  • line_comment_prefixオプション [ str ] )–
  • trim_blocksbool )–
  • lstrip_blocksbool )–
  • newline_sequence'te.Literal [ \ n [X94X ] \ r \ n \ r ] )–
  • keep_trailing_newlinebool )–
  • 拡張機能シーケンス [ ユニオン [ str タイプ [ 拡張機能 ] ] ] )–
  • 最適化bool )–
  • undefinedType [ jinja2.runtime.Undefined ] )–
  • finalizeオプション [ 呼び出し可能 [ [ ... [ X90X] ] Any ] ] )–
  • autoescapeUnion [ bool Callable [ [ オプション [ str ] ] [ X184X] bool ] ] )–
  • ローダーオプション [ BaseLoader ] )–
  • cache_sizeint )–
  • auto_reloadbool )–
  • bytecode_cacheオプション [ BytecodeCache ] )–
  • enable_asyncbool )–
class jinja2.nativetypes.NativeTemplate([options])
パラメーター
  • ソースユニオン [ str jinja2.nodes.Template ] )–

  • block_start_stringstr )–

  • block_end_stringstr )–

  • variable_start_stringstr )–

  • variable_end_stringstr )–

  • comment_start_stringstr )–

  • comment_end_stringstr )–

  • line_statement_prefixオプション [ str ] )–

  • line_comment_prefixオプション [ str ] )–

  • trim_blocksbool )–

  • lstrip_blocksbool )–

  • 'newline_sequencete.Literal [ \ n [X94X ] \ r \ n \ r ] )–

  • keep_trailing_newlinebool )–

  • 拡張機能シーケンス [ ユニオン [ str タイプ [ 拡張機能 ] ] ] )–

  • 最適化bool )–

  • undefinedType [ jinja2.runtime.Undefined ] )–

  • finalizeオプション [ 呼び出し可能 [ [ ... [ X90X] ] Any ] ] )–

  • autoescapeUnion [ bool Callable [ [ オプション [ str ] ] [ X184X] bool ] ] )–

  • enable_asyncbool )–

リターンタイプ

どれでも

render(*args, **kwargs)

テンプレートをレンダリングして、ネイティブPythonタイプを生成します。 結果が単一ノードの場合、その値が返されます。 それ以外の場合、ノードは文字列として連結されます。 結果をast.literal_eval()で解析できる場合は、解析された値が返されます。 それ以外の場合は、文字列が返されます。

パラメーター
  • argsAny )–

  • kwargsAny )–

リターンタイプ

どれでも