oujood.com

Django template: La balise cycle

Cet article porte sur l'utilisation de la balise cycle dans les templates. La balise cycle vous permet d'effectuer différentes tâches pour différentes itérations.
La balise cycle prend des arguments, la première itération utilise le premier argument, la seconde itération utilise le second argument, etc.

chercher |

la balise de template cycle

Cette balise est particulièrement utile dans une boucle .

La balise cycle produit un de ses arguments chaque fois qu'elle est rencontrée. Le premier argument est produit à la première rencontre, le deuxième à la deuxième rencontre, et ainsi de suite. Une fois que tous les arguments sont épuisés, la balise revient au premier argument et le produit à nouveau.

Syntaxe :

{% cycle 'valeur_1' 'valeur_2' ... valeur_n %}

ExempleSi vous voulez avoir une nouvelle couleur de fond pour chaque itération, vous pouvez le faire avec la balise cycle :

Fichier template.html             📋 Copier le code

<!DOCTYPE html>
<html>
<body>
<ul>
  {% for x in membres %}
    <li style="background-color:
	{% cycle 'lightblue' 'pink' 'yellow' 'coral' '#ccc' %};
	width:150px;padding-left:10px">
      {{ x.prenom }}
    </li>
  {% endfor %}
</ul>  

<p>Dans views.py, vous pouvez voir comment importer et 
récupérer les membres de la base de données.</p>
</body>
</html>

Fichier views.py             📋 Copier le code

from django.http import HttpResponse
from django.template import loader
from .models import Membres

def testing(request):
  monmembres = Membres.objects.all().values()
  template = loader.get_template('template.html')
  context = {
    'membres': monmembres,
  }
  return HttpResponse(template.render(context, request)) 
Reprenons l’exemple ci-dessus mais avec deux couleurs seulement

Fichier template.html             📋 Copier le code

<!DOCTYPE html>
<html>
<body>
<ul>
  {% for x in membres %}
    <li style="background-color:
	{% cycle 'pink' 'yellow'%};
	width:150px;padding-left:10px">
      {{ x.prenom }}
    </li>
  {% endfor %}
</ul>  

<p>Dans views.py, vous pouvez voir comment importer et 
récupérer les membres de la base de données.</p>
</body>
</html>

Arguments du cycle comme variable

Dans le premier exemple, les valeurs des arguments ont été affichées directement dans le cycle, mais vous pouvez également conserver les valeurs des arguments dans une variable, et les utiliser plus tard :

Exemple Stockez les valeurs de couleur dans une variable nommée bgcolor, et utilisez-la comme couleur de fond plus tard dans la boucle :

Fichier termplate.html             📋 Copier le code

<!DOCTYPE html>
<html>
<body>
<ul>
  {% for x in membres %}
	{% cycle 'lightblue' 'pink' 'yellow' 'coral' '#eee' as bgcolor silent  %}
    <li style="background-color:{{ bgcolor }};	
	width:150px;padding-left:10px">
      {{ x.prenom }}
    </li>
  {% endfor %}
</ul>  

<p>Dans views.py, vous pouvez voir comment importer et 
récupérer les membres de la base de données.</p>
</body>
</html> 

Vous avez remarqué le mot clé silent ? Assurez-vous de l'ajouter, sinon les valeurs des arguments seront affichées deux fois dans la sortie :

Vous pouvez reprendre l'exemple sans le mot clé "silent" pour voir ce que ça donne

Réinitialisation du cycle

Vous pouvez forcer le cycle à redémarrer en utilisant la balise {% resetcycle %} :

Exemple Redémarrer le cycle après 3 cycles :

Fichier termplate.html             📋 Copier le code

<!DOCTYPE html>
<html>
<body>
<ul>
  {% for x in membres %}
	{% cycle 'lightblue' 'pink' 'yellow' 'coral' '#eee' as bgcolor silent  %}
	{% if forloop.counter == 3 %}
      {% resetcycle %}
    {% endif %}
    <li style="background-color:{{ bgcolor }};	
	width:150px;padding-left:10px">
      {{ x.prenom }}
    </li>
  {% endfor %}
</ul>  

<p>Dans views.py, vous pouvez voir comment importer et 
récupérer les membres de la base de données.</p>
</body>
</html> 


Voir aussi nos tutoriel :

Balise universelle div

Définit une section dans un document

fonction chop, chop

Alias de rtrim

fonction getdate)

Retourne la date/heure pour un timestamp Unix sous forme de tableau