Jinja2にカスタムタグがあり、最初に呼び出されたときにのみ出力したいものがあります。したがって、次のテンプレートがあるとします。
1. {% only_once %}
2. {% only_once %}
3. {% only_once %}
出力を次のようにします。
1. "I only get printed once!"
2.
3.
これを行うための最良の方法は、テンプレートのコンテキストでフラグを設定して、すでに何かを印刷したかどうかを追跡することだと思います。これがコードサンプルですが、これは正しいですか?
class OnlyOnceExtension(Extension):
tags = set(['only_once'])
@contextfunction
def parse(self, context, parser):
if hasattr(context, 'my_flag') and context.my_flag:
return Output("")
else:
return Output("I only get printed once!")
あれは正しいですか?コンテキストが不変であることについていくつか読んだので、これは機能しませんか?(http://jinja.pocoo.org/2/documentation/apiを参照し、不変を検索してください)