2017-09-15 2 views
0

J'ai le modèle suivant:variables Jinja2 hors de portée

{% 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 %} 

ce modèle ne fonctionne pas à cause de la question discutée ici How to increment a variable on a for loop in jinja template? Pour doesn't work Je veux dire que le dispositif de rotation est toujours l'un et ne changement.

Comment puis-je surmonter le problème suivant?

+0

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

+0

Alors, quel est le problème que vous essayez de résoudre? Par exemple, une seule modification de '' value '': "{{rotator - 1 + idx}}" 'donne des résultats qu'une personne peut juger raisonnables. Mais comment quelqu'un est-il censé savoir quelles sont vos attentes? – techraf

+0

Mes attentes sont que rotator doit avoir le modèle suivant 1,2,3,1,2,3, etc ... – Mazzy

Répondre

1

Le modèle:

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

Le résultat (pour 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" 
}, 

je quitte la , de fin parce que vous ne spécifiez pas quoi faire avec lui non plus.