OUJOOD.COM
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>