Je voudrais faire quelque chose comme :
La variable p provient de test.py qui est une liste ['a', 'b', 'c', 'd'].
{% for i in p %}
{{variable++}}
{{variable}}
La sortie du résultat est :
1 2 3 4
Je voudrais faire quelque chose comme :
La variable p provient de test.py qui est une liste ['a', 'b', 'c', 'd'].
{% for i in p %}
{{variable++}}
{{variable}}
La sortie du résultat est :
1 2 3 4
Vous pourriez utiliser loop.index
:
{% for i in p %}
{{ loop.index }}
{% endfor %}
Vérifiez le documentation du concepteur de modèles .
Dans les versions plus récentes, en raison des règles de scoping, les éléments suivants sont utilisés no travail :
{% set count = 1 %}
{% for i in p %}
{{ count }}
{% set count = count + 1 %}
{% endfor %}
Comme le dit Jeroen, il y a des problèmes de champ d'application : si vous définissez 'count' en dehors de la boucle, vous ne pouvez pas le modifier à l'intérieur de la boucle.
Vous pouvez éviter ce comportement en utilisant un objet plutôt qu'un scalaire pour 'count' :
{% set count = [1] %}
Vous pouvez maintenant manipuler count à l'intérieur d'une boucle for ou même d'un %include%. Voici comment j'incrémente count (oui, c'est un peu bizarre mais bon) :
{% if count.append(count.pop() + 1) %}{% endif %} {# increment count by 1 #}
{% set count = [] %}
{% for something-that-loops %}
{% set __ = count.append(1) %}
<div> Lorem ipsum meepzip dolor...
{{ count|length }}
</div>
{% endfor %}
(D'après les commentaires de @eyettea et @PYB)
Voici ma solution :
Mettez tous les compteurs dans un dictionnaire :
{% set counter = {
'counter1': 0,
'counter2': 0,
'etc': 0,
} %}
Définissez une macro pour les incrémenter facilement :
{% macro increment(dct, key, inc=1)%}
{% if dct.update({key: dct[key] + inc}) %} {% endif %}
{% endmacro %}
Maintenant, quand vous voulez incrémenter le compteur 'counter1', il suffit de le faire :
{{ increment(counter, 'counter1') }}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.