65 votes

Comment obtenir des valeurs impaires et paires dans une boucle for de modèle Django ?

J'ai ce code

{% for o in some_list %}

Maintenant je veux faire quelques choses si je suis sur une ligne paire. Comment puis-je faire cela?

141voto

bernie Points 44206

https://docs.djangoproject.com/fr/dev/ref/templates/builtins/#divisibleby

{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}

5 votes

+1. Il vaut également la peine de mentionner la balise cycle, en fonction de ce que vous voulez exactement faire sur les lignes paires.

0 votes

Vrai. Merci d'avoir ajouté cela. Il y avait un bug / un comportement inattendu associé à la balise cycle; peut-être que cela a depuis été corrigé...

0 votes

À ce jour, je ne pense pas que ça l'ait été. Le contrôle actuel du cycle semble être vestigial au mieux - je ne vois aucun moyen de réinitialiser un cycle, juste un moyen de le faire avancer.

91voto

Nikolay Fominyh Points 2739

Dans le cycle de premier niveau :

{% cycle 'impair' 'pair' %}

Référence :

1 votes

Étant donné qu'il existe plusieurs façons d'utiliser cette balise, cette réponse pourrait être améliorée avec des exemples, comme ceux présents dans la documentation de Django : docs.djangoproject.com/en/2.2/ref/templates/builtins/#cycle

8voto

7guyo Points 177
{% pour post dans posts %}
      {% cycle 'impair' 'pair' %}
      {% if cycle == 'impair' %}
        Messages impairs
      {% else %}
        Messages pairs
      {% endif %}
     {% endfor %}

Ou

{% pour post dans posts %}
   {% if forloop.counter|divisibleby:2 %}
        Messages pairs
      {% else %}
        Messages impairs
      {% endif %}
    {% endfor %}

1voto

Zoltan Fedor Points 1141
{% for post in posts %}
   {% if loop.index is divisibleby 2 %}
        Messages pairs
      {% else %}
        Messages impairs
      {% endif %}
    {% endfor %}

http://mitsuhiko.pocoo.org/jinja2docs/html/templates.html#id3

Prograide.com

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.

Powered by:

X