0

我是 Jinja2 模板引擎的新手。有没有类似于 Zend Framework 中的视图助手的东西?我可以创建简单的函数并在所有模板文件中重用它们吗?

像这样的东西?

#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!') %}
4

2 回答 2

3

您可以通过多种方式向模板公开帮助函数。您可以使用宏定义它们,然后它们导入到使用它们的模板中。您可以将函数添加到 Template 对象的globals 属性,或将它们传递给render()方法。你可以继承 Template 来做同样的事情,而不必每次都重复自己。如果你想变得非常花哨,你也可以考虑编写扩展(但你可能不需要那么深入)。

于 2010-07-11T17:28:06.323 回答
2

在某些时候,您将创建一个 Jinja2 环境。该环境有一个名为过滤器的属性,它是将名称映射到函数的字典。所以你想做的是:

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.

于 2010-07-12T00:00:20.857 回答