【问题标题】:Jinja2: Looking for a View-HelperJinja2:寻找视图助手
【发布时间】:2011-03-14 12:40:00
【问题描述】:

我是 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!') %}

【问题讨论】:

    标签: python jinja2


    【解决方案1】:

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

    【讨论】:

      【解决方案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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        • 2011-07-16
        • 2015-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多