获取错误:jinja2.exception.TemplateAssertionError:没有名为' basename'的过滤器

时间:2016-02-10 07:17:33

标签: python filter jinja2

创建模板文件时出现此类错误。 我很简单地使用这种语法:

{{ "hello\how\are" | basename}}

请帮我解决。

由于

2 个答案:

答案 0 :(得分:1)

从我在Jinja2官方文档中看到的,没有basename过滤器。
请参阅Jinja2 - List of Builtin Filters

编辑:
您可以编写自己的basename过滤器,例如:

def basename(text):
    return text.split('\\')[-1]

app.add_template_filter(basename)

答案 1 :(得分:1)

在使用Jinja2的独立程序中,我遇到了类似的错误。就我而言,我没有应用程序,因此无法使用app.add_template_filter。我有一个包含过滤器字典的Environment实例。我添加到该字典,并且过滤效果很好。如果环境是“ e”,那么我会执行以下操作:

e.filters['basename'] = basename

在上一个答案中假设一个基本名称函数。对于应用程序,app.jinja_env公开环境,因此变为:

app.jinja_env.filters['basename'] = basename