python - 在 Python Jinja 模板中的 for 循环内应用 if 语句
问题描述
我得到了这个简单的 HTML 模板:
{% block html_page %}
{% set counter = 1 %}
{% for field in fields %}
COUNTER: {{ counter }} <br>
{% set counter = counter+1 %}
{% endfor %}
{% endblock %}
其中fields
包含 4 个项目。
输出是:
COUNTER: 1
COUNTER: 1
COUNTER: 1
COUNTER: 1
虽然我想要的输出应该是计数器增加:
COUNTER: 1
COUNTER: 2
COUNTER: 3
COUNTER: 4
计数器分配是在 for 循环内完成的,所以我不明白为什么它一直返回到 1。
有什么建议么?
解决方案
由于 Jinja 中的范围规则,这不起作用。
在 Jinja 2.10 之后,要解决范围问题,您可以这样做:
{% set count = namespace(a=0) %}
{% for field in fields %}
{{ count.a }}
{% set count.a = count.a + 1 %}
{% endfor %}
或者你可以使用 loop.index:
{% for field in fields %}
{{ loop.index }}
{% endfor %}
推荐阅读
- node.js - 无法使用 ssl 连接到 Heroku Postgres
- python - 单击列标题时,TkinterTreeCtrl MultiListBox 重新排序列表
- websphere - 是否可以集成 WAS 9 和 WSRR 8.5.6.2?
- r - 如何在具有不同列名的列名中间按字符折叠数据框列?
- python - 类方法中的Python多线程
- postgresql - CloudRun 突然得到`不正确的路径 /cloudsql/{SQL_CONNECTION_NAME} 连接到 Postgres Cloud SQL 实例“{SQL_CONNECTION_NAME}”`
- python - 如何在 Cython 中使用 `restrict` 关键字?
- python - 我想用 Python 3 输入 CSV,但我想从现在开始
- algorithm - 当边缘具有有限值时,在 O(V+E) 中找到最小生成树
- api-platform.com - API 平台是否支持端点中的多个查询参数?