在 jinja2 for 循环中,如何跟踪变量的前一个值(用于显示“组”之间的中断)?显而易见且直接的答案是:
{% set last_val='unk' %}
{% for object in data %}
{% if object[0]!=last_val %}
<output whatever separation code>
{% set last_val=object[0] %}
{% endif %}
<other stuff>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
...由于 jinja2 的范围规则而不起作用 - 每次循环都会看到相同的“unk”。我该如何解决这个限制?
编辑:我正在研究我的一些旧代码,我在其中做了类似的事情,显然这确实适用于 jinja2 2.8,但在 2.9.6 之前的某个时候崩溃了。所以我想一种解决方案是降级到 2.8 并保持在那里。
使用“loop.previtem”。
{% for object in data %}
{% if loop.index0 ==0 %}
<output whatever separation code>
{% elif loop.index0 > 0 and loop.previtem[0] != object[0] %}
<output whatever separation code>
{% endif %}
<other stuff>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
小智 0
jinja 无法更改变量的值,但您可以使用字典来更改键的值。这会起作用的。
{% set last_val={'key':'unk'} %}
{% for object in data %}
{% if object[0]!=last_val.key %}
<output whatever separation code>
{% set test = last_val.update({'unk':object[0]}) %}
{% endif %}
<other stuff>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)