Python模板,检查迭代的变量值类型

Python模板,检查迭代的变量值类型,python,templates,flask,Python,Templates,Flask,说我有这本字典 {"k1":"dog", "k2":"cat", "k3":["Pochi","Wanwan"]} 现在在我的模板中,我像这样迭代: {% for key, value in dict.iteritems() %} <tr> <td>{{ key }}</td> <td>{{ value }}</td> </tr> {% endfor %} {%用于键,di

说我有这本字典

{"k1":"dog", "k2":"cat", "k3":["Pochi","Wanwan"]}
现在在我的模板中,我像这样迭代:

{% for key, value in dict.iteritems() %}
    <tr>
        <td>{{ key }}</td>
        <td>{{ value }}</td>
    </tr>
{% endfor %}
{%用于键,dict.iteritems()中的值%}
{{key}}
{{value}}
{%endfor%}
但是我确实想在标记中做一些额外的处理,是否可以检查“value”是列表类型还是字典类型?因此,我可以做一些事情,比如说,用子弹打他们,而不是仅仅把清单吐出来

要检查“value”是否属于字典类型,可以执行以下操作

{% for key, value in dict.iteritems() %}
<tr>
    <td>{{ key }}</td>
    {% if value is mapping %}
        "Do something"
    {% else %}
        <td>{{ value }}</td>
</tr>
{% endfor %}
然后将函数声明为过滤器

from flask import Flask
app = Flask(__name__)
....
app.jinja_env.filters['is_list'] = is_list

然后,该筛选器将在模板中可用。

提供的链接似乎包含用于列表检查的答案,但我的jinja2模块似乎没有找到jinja2:(有其他选择吗?没关系,刚刚看到你的编辑刚刚测试了这个,问题是字符串也是可编辑的哈。所以我会用字符切碎一个字符串。哎呀,我没想到。我认为自定义筛选器是一种方法。你试过创建一个吗?很简单。尝试创建自定义筛选器,但python开始大喊大叫。)当我尝试jinja2.jinja2(应用程序)时,我似乎jinja2不在我的模块中:sIt似乎不像env=jinja2.Environment()->env.filters….正在将筛选器添加到上下文中。当它尝试呈现模板时,没有获得名为“is_list”的筛选器:(
from flask import Flask
app = Flask(__name__)
....
app.jinja_env.filters['is_list'] = is_list