Créer des fichiers XML à partir d'une base de données
Cet article porte sur l'utilisation de la balise for dans les templates ( modèles ). La balise for boucle sur chaque élément d'un tableau, rendant l'élément disponible dans une variable.
Django, étant basé sur Python, utilise un modèle similaire de boucle for avec seulement des différences mineures dans la syntaxe
{% for i in list %} # code à exécuter {% endfor %}Exemple Parcourir en boucle les éléments d'une liste : Fichier testes/templates/template.html
Fichier testes/templates/template.html Copier le code
<!DOCTYPE html> <html> <body> <!DOCTYPE html> <html> <body> <h1>Liste des fruits :</h1> <ul> {% for x in fruits %} <li>{{ x }}</li> {% endfor %} </ul> <p>Dans le fichier views.py, vous pouvez voir à quoi ressemble la variable fruits.</p> </body> </html> </body> </html>
from django.http import HttpResponse from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'fruits': ['Orange', 'Banane', 'serise','pomme','avocat'], } return HttpResponse(template.render(context, request))
Fichier testes/templates/template.html Copier le code
<!DOCTYPE html> <html> <body> <h1>Marques de voitures françaises :</h1> <dl> {% for x in voitures %} <dt>Marque :{{ x.marque }}</dt> <dd>Année : {{ x.annee }}</dd> {% endfor %} </dl> <p>Dans le fichier views.py, vous pouvez voir à quoi ressemble la variable voitures.</p> </body> </html>
Fichier testes/views.py : Copier le code
from django.http import HttpResponse from django.template import loader def testing(request): template = loader.get_template('template.html') context = { 'voitures': [ {'marque': 'BUGATTI' , 'annee': '1909'}, {'marque':'CHRYSLER', 'annee':'1970-1979' }, {'marque':'CITROëN', 'annee':'Depuis 1919' }, {'marque':'DS', 'annee':'2014 '}, {'marque':'DELAHAYE','annee':'1935-1954'}, {'marque':'FACEL-VEGA','annee':'1954-1964'}, {'marque':'FORD ','annee':'1916-1954 '}, {'marque':'PANHARD','annee':'1890-1967'},], } return HttpResponse(template.render(context, request))
Fichier testes/templates/template.html Copier le code
<!DOCTYPE html> <html> <body> <h1>Liste des membres :</h1> <table><tr><th>Prénom</th><th>Nom</th><th>Email</th></tr> {% for x in membres %} <tr> <td>{{ x.prenom }}</td> <td> {{ x.nom }}</td> <td>{{x.mail}}</td> </tr> {% endfor %} </table> </body> </html>
Fichier testes/views.py : Copier le code
from django.http import HttpResponse, HttpResponseRedirect 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))
{% for x in membres reversed %} <tr> <td>{{ x.prenom }}</td> <td> {{ x.nom }}</td> <td>{{x.mail}}</td> </tr> {% endfor %}
Fichier testes/templates/template.html Copier le code
<!DOCTYPE html> <html> <body> <h1>Liste des membres :</h1> <ul> {% for x in monobjet %} {% empty %} <li>Aucun membre trouvé</li> {% endfor %} </ul> </body> </html>
Fichier testes/views.py : Copier le code
from django.http import HttpResponse, HttpResponseRedirect from django.template import loader from .models import Membres def testing(request): monmembres = Membres.objects.all().values() template = loader.get_template('template.html') context = { 'monobjet' : [], } return HttpResponse(template.render(context, request))