如何在jinja2中的if语句中使用变量?
我从一个Python应用程序那里得到了一个列表(categories
),我想对这个列表进行遍历。我的目标是根据这个列表中的输入定义一个变量,然后把它和一个字符串拼接在一起,接着在后面的循环中使用这个拼接后的结果。拼接完成后,atom_type
这个字符串会指向应用程序中的另一个列表。
{% for c in categories %}
{% set atom_type = 'atoms_' + c %}
{% for atom in atom_type %}
{% endfor %}
{% endfor %}
问题是,在第二个循环中,atom_type
被当作一个字符串来处理,而不是作为一个对象。那我该怎么用atom_type
这个变量来指向一个对象(Python列表)呢?
1 个回答
1
你可以把分类构建成一个字典的列表,然后把它们传递给模板,接着使用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>