我在 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并搜索 immutable)