2017-09-16 1 views
0

J'essaie de changer la valeur d'une variable dans une boucle, de cette façon je peux faire des choses pour la première itération seulement, puis faire d'autres choses pour toutes les itérations suivantes.jinja2/flask change la valeur de la variable

{% set vars = {'foo': True} %} 
{% for line in project[2].split('[newline]') %} 
{% if vars.foo %} 
    its true! 
{% else %} 
    its false! 
{% endif %} 
{% vars.update({'foo': False}) %} 
{% endfor %} 

La sortie ressemble à «c'est vrai! c'est vrai! c'est vrai! c'est vrai! ', donc Jinja ne comprend pas le fait que la variable a été changée.

J'ai également essayé d'échanger {% vars.update({'foo': False}) %} pour {% vars.foo == False %} mais cela n'a pas fonctionné.

Merci pour votre aide

Répondre

3

J'ai résolu mon problème!

Pas besoin d'utiliser une variable, Jinja2 a quelque chose qui compte le nombre d'itérations dans une boucle.

Je viens de changer mon code comme ceci:

{% for line in project[2].split('[newline]') %} 
    {% if loop.index == 1 %} 
     its true! 
    {% else %} 
     its false! 
    {% endif %} 
    {% endfor %}