我可以在自定义Flask jinja2过滤器中组合内置过滤器吗?

时间:2013-04-27 16:15:35

标签: python flask jinja2

所以我正在尝试在Flask中制作自定义过滤器,我不确定我是否可以使用带蓝图的自定义过滤器,所以我只是把它放在我的app配置中,因为我不能在@app装饰器中使用其他文件。

def configure_jinja2(app):
    urlize = app.jinja_env.filters['urlize']
    truncate = app.jinja_env.filters['truncate']
    @app.template_filter('myfilter')
    def myfilter(s, trim=False, trunc=255):
        s = urlize(s)
        if trim:
          s = truncate(s, trunc)
        return s

所以我正在尝试组合2个内置的jinja2过滤器,以创建一个新的自定义过滤器,它也会做其他的事情。

这会出错: TypeError:do_urlize()至少需要2个参数(给定1个)

我为eval_context投入了什么?

https://github.com/mitsuhiko/jinja2/blob/master/jinja2/filters.py

1 个答案:

答案 0 :(得分:3)

jinja2.filters.do_urlize只是jinja2.utils.urlize的一个瘦包装,它不带eval_context。对于采用评估上下文的大多数其他内置过滤器来说也是如此。