【问题标题】:Adding a custom filter to jinja2 on GAE在 GAE 上向 jinja2 添加自定义过滤器
【发布时间】:2012-09-17 17:12:55
【问题描述】:

我需要在 jinja2 中添加一个非常简单的过滤器。基本上,它需要一个数字,如果它是正数,则附加一个“+”。我遵循了关于如何添加自定义过滤器的 jinja2 文档,但它似乎不起作用(在 GAE 上)。

Python:

def str_votes(votes):
    if votes > 0:
        return '+' + str(votes)
    else:
        return str(votes)

# jinja2 stuff
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
                               autoescape=True)
jinja_env.globals['str_votes'] = str_votes

HTML(用于渲染页面):

<div>{{ 123|str_votes }}</div>

这给了我一个错误:TemplateAssertionError: no filter named 'str_votes'

我该如何解决这个问题? (这里有一个similar question 从未得到答复。)

【问题讨论】:

    标签: google-app-engine jinja2 customization


    【解决方案1】:

    您必须注册过滤器。比如:

    jinja_env.filters['str_votes'] = str_votes
    

    【讨论】:

      【解决方案2】:

      我通过在全局变量中注册它做了类似的事情:

          def jinja2(self):
             j.environment.globals['humanize_time']= humanize_time
             return j
      

      然后使用我们想要在模板中传递的数据调用它,如下所示:

      {{ humanize_time(f.last_post_time) }}
      

      【讨论】:

        猜你喜欢
        • 2011-12-23
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 2021-02-24
        • 2012-01-10
        • 2011-11-12
        • 1970-01-01
        相关资源
        最近更新 更多