Jinja检查每个循环索引值

时间:2019-09-17 08:17:57

标签: python-3.x jinja2

在神贾状态下我该怎么做

我的目标是在循环的每个索引中检查value_index的值,如果下一个索引值相同,则不会打印。直到下一个值不等于value_index,它才会打印出来。

样本数据:

users = [ ('username1','password1'),('username2','password1') ]
contacts  = [('0909','0909','0011','0011','0011','0908')]

到目前为止,我已经有了这段代码,但是它没有按我预期的那样工作

{% for items in users %}
  {% set i = loop %}
  {% set value_index = '' %}
  {% print(items[0]) %}

  {% for item in contacts %} 
     {% if value_index  != item  %}
        {% print(item) %}  
    {% endif %} 
    {% set value_index = item %}

  {% endfor %} 
{% endfor %} 

我的预期输出是

username1
0909
0011
0908
username2
0909
0011
0908

1 个答案:

答案 0 :(得分:1)

我想您正在寻找loop.changed(*val)方法:https://jinja.palletsprojects.com/en/2.10.x/templates/#for(见表)。因此,您只需要像这样在if标记中调用方法:

{% for items in users %}
  {% print(items[0]) %}

  {% for item in contacts %}
     {% if loop.changed(item)  %}
        {{ item }}
     {% endif %} 
  {% endfor %} 
{% endfor %} 

如果item的值实际上与上一次调用loop.changed有所不同,则调用的结果为truefalse否则。