loop.nextitem 不适用于数据中的当前值
loop.nextitem doesn't work with current value from data
我需要将 postback.campaign_id
与下一项的值进行比较。如果相似,那么,我什么都不打印,如果不相似,那么,打印我的行。
但是,这段代码输出了所有内容。
<table>
<tr>
<td class="expand expand-campaign"><a>Test</a></td>
<td>{{ account_id }}</td>
</tr>
{% for postback in postbacks %}
{% if loop.nextitem is defined and postback.campaign_id != loop.nextitem[0] %}
<tr>
<td></td><td></td>
<td><input type="checkbox"></td>
<td class="expand expand-site"><a>{{ postback.campaign_id }}</a></td>
</tr>
{% endif %}
{% endfor %}
</table>
loop.nextitem
包含下一项中的整个变量。所以,如果它是一个字典或对象,就像你的情况一样,你可以像循环下的当前对象一样访问它的属性。
在您的情况下,这意味着:
postback.campaign_id != loop.nextitem.campaign_id
您还遇到了您的最后一项总是被条件 loop.nextitem is defined
跳过的问题。由于您将始终打印一系列相似项目的最后一项,因此您可以完美地做到:
{% if loop.nextitem is undefined
or postback.campaign_id != loop.nextitem.campaign_id
%}
另请注意,Jinja 中有一个 loop.changed()
构造,在这个特定用例中可以派上用场。
因此,列表如下:
postbacks = [
{'campagn_id': 1},
{'campagn_id': 2},
{'campagn_id': 2},
{'campagn_id': 3},
{'campagn_id': 3},
]
Jinja 的这段代码:
<table>
{%- for postback in postbacks %}
{%- if loop.changed(postback.campaign_id) %}
<tr>
<td class="expand expand-site">
{{ postback.campaign_id }}
</td>
</tr>
{%- endif %}
{%- endfor %}
</table>
它呈现为:
table {
border-collapse: collapse;
}
td {
border: 1px solid;
padding: 4px;
}
<table>
<tr>
<td class="expand expand-site">
1
</td>
</tr>
<tr>
<td class="expand expand-site">
2
</td>
</tr>
<tr>
<td class="expand expand-site">
3
</td>
</tr>
</table>
我需要将 postback.campaign_id
与下一项的值进行比较。如果相似,那么,我什么都不打印,如果不相似,那么,打印我的行。
但是,这段代码输出了所有内容。
<table>
<tr>
<td class="expand expand-campaign"><a>Test</a></td>
<td>{{ account_id }}</td>
</tr>
{% for postback in postbacks %}
{% if loop.nextitem is defined and postback.campaign_id != loop.nextitem[0] %}
<tr>
<td></td><td></td>
<td><input type="checkbox"></td>
<td class="expand expand-site"><a>{{ postback.campaign_id }}</a></td>
</tr>
{% endif %}
{% endfor %}
</table>
loop.nextitem
包含下一项中的整个变量。所以,如果它是一个字典或对象,就像你的情况一样,你可以像循环下的当前对象一样访问它的属性。
在您的情况下,这意味着:
postback.campaign_id != loop.nextitem.campaign_id
您还遇到了您的最后一项总是被条件 loop.nextitem is defined
跳过的问题。由于您将始终打印一系列相似项目的最后一项,因此您可以完美地做到:
{% if loop.nextitem is undefined
or postback.campaign_id != loop.nextitem.campaign_id
%}
另请注意,Jinja 中有一个 loop.changed()
构造,在这个特定用例中可以派上用场。
因此,列表如下:
postbacks = [
{'campagn_id': 1},
{'campagn_id': 2},
{'campagn_id': 2},
{'campagn_id': 3},
{'campagn_id': 3},
]
Jinja 的这段代码:
<table>
{%- for postback in postbacks %}
{%- if loop.changed(postback.campaign_id) %}
<tr>
<td class="expand expand-site">
{{ postback.campaign_id }}
</td>
</tr>
{%- endif %}
{%- endfor %}
</table>
它呈现为:
table {
border-collapse: collapse;
}
td {
border: 1px solid;
padding: 4px;
}
<table>
<tr>
<td class="expand expand-site">
1
</td>
</tr>
<tr>
<td class="expand expand-site">
2
</td>
</tr>
<tr>
<td class="expand expand-site">
3
</td>
</tr>
</table>