2017-09-15 6 views
0

Ich habe die folgende Vorlage:Jinja2 Variable außerhalb des Bereichs

{% set rotator = 1 %} 
{% for idx in range(1, count|int + 1) %} 
{% if rotator == 4 %} 
    {% set rotator = 1 %} 
{% endif %} 
{ 
    "id": "{{ '%02d' % idx }}", 
    "value": "{{rotator}}" 
}, 
{% set rotator = rotator + 1 %} 
{% endfor %} 

diese Vorlage wegen der Ausgabe hier How to increment a variable on a for loop in jinja template? ich meine Für doesn't work diskutiert nicht funktioniert, dass der Rotor immer ist und nicht Veränderung.

Wie also könnte ich das folgende Problem überwinden?

+0

https://fabianlee.org/2016/10/18/saltstack-setting-a-jinja2-variable-from-an-inner-block-scope/ – Mazzy

+0

Also, was ist das Problem, das Sie versuchen zu lösen? Zum Beispiel gibt eine einzelne Änderung zu "Wert": "{{rotator - 1 + idx}}" 'Ergebnisse, die eine Person für vernünftig halten könnte. Aber wie soll jemand wissen, was deine Erwartungen sind? – techraf

+0

Meine Erwartungen sind, dass Rotator das folgende Muster haben muss 1,2,3,1,2,3, etc ... – Mazzy

Antwort

1

Die Vorlage:

{% for idx in range(1, count|int + 1) %} 
{ 
    "id": "{{ '%02d' % idx }}", 
    "value": "{{ (idx+2)%3+1 }}" 
}, 
{% endfor %} 

Das Ergebnis (für count=7):

{ 
    "id": "01", 
    "value": "1" 
}, 
{ 
    "id": "02", 
    "value": "2" 
}, 
{ 
    "id": "03", 
    "value": "3" 
}, 
{ 
    "id": "04", 
    "value": "1" 
}, 
{ 
    "id": "05", 
    "value": "2" 
}, 
{ 
    "id": "06", 
    "value": "3" 
}, 
{ 
    "id": "07", 
    "value": "1" 
}, 

Ich lasse die Endung ,, weil Sie nicht angeben, was mit ihm zu tun, entweder.