在Jinja2中测试列表

MFB*_*MFB 22 python jinja2

据我所知,没有办法测试对象是否是Jinja2中的List实例.首先,这是正确的吗?其次,是否有人在Jinja2中实现了自定义测试/扩展?任何帮助都会很棒.

ins*_*der 45

我是这样做的:

{% if var is iterable and var is not string %}
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下`{%if var is string%}`完美地工作; 谢谢. (2认同)

fre*_*rik 14

您可以轻松地在jinja2中使用自定义过滤器.

首先创建测试方法:

def is_list(value):
    return isinstance(value, list)
Run Code Online (Sandbox Code Playgroud)

并将其添加为自定义过滤器:

j = jinja2.Jinja2(app)
j.environment.filters.update({
        'is_list': is_list,
})
Run Code Online (Sandbox Code Playgroud)


小智 13

Iterable 在 dict 上也返回 True。尝试这个:

{% if var.__class__.__name__ == 'list' %}
Run Code Online (Sandbox Code Playgroud)