簡體   English   中英

更新循環內的變量返回相同的值

[英]update variable inside loop returns the same value

我有一個循環,我必須在其中設置兩個連續的數字。 第一個數字是循環計數器,下一個是循環計數器 + 1。在下一個循環迭代中,我希望它從最后使用的數字繼續。 它一直在拾取下一個循環計數器而不是 + 1。並且不確定為什么。

我試圖在循環的頂部和末尾設置變量,但仍然得到相同的結果。

Example:
precedence = 3
att_ip = ["1.1.1.1", "2.2.2.2"]
expected results:
 precedence is 3
 precedence plus index 3
 precedence plus index + 1 is  4
 
 precedence is 5
 precedence plus index 5
 precedence plus index + 1 is  6
 
Actual results:
 precedence is 3
 precedence plus index 3
 precedence plus index + 1 is  4

 precedence is 3
 precedence plus index 4
 precedence plus index + 1 is  5
{% for att_ip in att_ips %}
{% set precedence = precedence + 1 %}

precedence is {{ precedence }}
precedence plus index {{ precedence + loop.index0 }}
precedence plus index +1 is  {{ precedence + loop.index }}


{% endfor %}

您不能像那樣在循環中設置變量; 請參閱作業部分中有關作用域行為的 Jinja 文檔:

請記住,不可能在塊內設置變量並讓它們顯示在塊外。 這也適用於循環。 該規則的唯一例外是不引入作用域的 if 語句。 因此,以下模板不會執行您可能期望的操作:

 {% set iterated = false %} {% for item in seq %} {{ item }} {% set iterated = true %} {% endfor %} {% if not iterated %} did not iterate {% endif %}

使用 Jinja 語法不可能做到這一點

有一些方法可以解決這個問題,但{{ precedence + loop.index }}不是總能給你想要的值嗎?


你可以這樣做:

{% set initial_precedence = precedence %}
{% for att_ip in att_ips %}
{% set precedence = initial_precedence + loop.index %}

precedence is {{ precedence }}
precedence plus index {{ precedence + loop.index0 }}
precedence plus index +1 is  {{ precedence + loop.index }}
{% endfor %}

這將產生輸出:


precedence is 4
precedence plus index 4
precedence plus index +1 is  5

precedence is 5
precedence plus index 6
precedence plus index +1 is  7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM