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

标签 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 %}

但我确实想在标签内做一些额外的处理,是否可以检查“值”是列表还是字典类型?这样一来,我不仅可以吐出 list ,还可以做一些事情,例如,说出要点。

最佳答案

要检查“值”是否属于字典类型,您可以这样做

{% for key, value in dict.iteritems() %}
<tr>
    <td>{{ key }}</td>
    {% if value is mapping %}
        "Do something"
    {% else %}
        <td>{{ value }}</td>
</tr>
{% endfor %}

要检查“值”是否属于列表类型,您可以创建自定义过滤器。 Here's您会发现有用的链接。

编辑:这是一个如何创建自定义过滤器的示例。先说功能

def is_list(value):
    return isinstance(value, list)

然后将函数声明为过滤器

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

然后过滤器将在您的模板中可用。

关于Python 模板,检查迭代的变量值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579110/

相关文章:

c++ - auto* 的类型推导规则是什么?

python - 长类名的最佳命名约定是什么?

python - 我无法在 docker 中安装 opencv-contrib-python

python - django 无法读取静态文件夹中的 css 文件

python - 如何在sklearn的python代码中使用SwarmPackagePy进行回归?

python - python中的内存错误TFIDF余弦相似度

c++ - "invalid use of incomplete type"部分模板特化错误

c++ - 变体:没有用于调用 'get' 的匹配函数

Flask - 动态创建文件并将其上传到文件夹中

angularjs - Flask-Security CSRF token