如何在jinja2中的if语句中使用变量?

时间:2014-08-13 21:04:10

标签: python jinja2

我从Python应用程序收到一个列表(categories),我迭代了一下。我想基于此列表中的输入定义一个变量,将其与一个字符串连接起来并将其用于进一步的循环。连接后,atom_type的字符串文字引用应用程序中的另一个列表。

{% for c in categories %}

{% set atom_type = 'atoms_' + c %}

{% for atom in atom_type %}

{% endfor %}
{% endfor %}

问题是,在第二个for循环中atom_type被视为一个字符串,而不是一个对象。你如何使用atom_type变量来引用一个对象(python列表)?

1 个答案:

答案 0 :(得分:1)

您可以将类别构建为dicts列表,将它们传递给模板并使用groupby()过滤器:

<ul>
{% for atoms in categories|groupby('atom_type') %}
    <li>{{ group.grouper }}<ul>
    {% for atom in group.list %}
        <li>{{ atom.name }} {{ atom.weight }}</li>
    {% endfor %}</ul></li>
{% endfor %}
</ul>