Jinja2: 寻找视图助手
我刚接触Jinja2模板引擎。请问有没有类似Zend框架中的视图助手的东西?我可以创建一些简单的函数,然后在所有模板文件中重复使用它们吗?
像这样吗?
#somewhere in my python code:
def nice_demo_function(message):
""""return a simple message"""
return message
这样我就可以使用它了:
<!-- now in my template-file -->
{% nice_demo_function('yes, this works great!') %}
2 个回答
2
在某个时候,你会创建一个Jinja2环境。这个环境里有一个叫做filters的属性,它是一个字典,用来把名字和函数对应起来。所以你想要做的就是:
def my_helper(value):
return "-~*#--- %s ---#*~-" % value
env = Jinja2.Environment(...)
env.filters['my_helper'] = my_helper
现在在你的模板里,你可以这样做:
<p>The winner is {{ winner | my_helper }}</p>
这样你的函数就会被调用,并且会传入变量的值,在这个例子中是winner
。如果你在使用Pylons,这一切都发生在config/environment.py
里。