Dessin d’un polygone en SVG
Dans cet article, nous allons voir comment utiliser la balise extends dans les templates en Django. La balise extends est utilisée pour l'héritage des templates.
La balise extends permet à des pages d’hériter d’une page parente, sans avoir à écrire le même code encor et encor.
{% extends 'nom_templat.html' %}
dossier1/ template.html page2.html sous_dossier/ page3.html page1.html dossier2/ page4.html
Fichier page_parente.html 📋 Copier le code
<!DOCTYPE html> <html> <body> <h1> Bienvenu </h1> {% block monmessage %} {% endblock %} <p> Jetez un coup d'œil aux deux templates pour voir à quoi ils ressemblent, et à views.py pour voir la référence au template enfant. </p> </body> </html>2) la page enfant :
Fichier template.html 📋 Copier le code
{% extends 'page_parente.html' %} {% block monmessage %} <p>Cette page a une page parente</p> {% endblock %}3) La page views
Fichier views.py 📋 Copier le code
from django.http import HttpResponse from django.template import loader def testing(request): template = loader.get_template('template.html') return HttpResponse(template.render())Explication : On place des espaces réservés dans le template parent, qui indiquent à Django où placer tel ou tel contenu.
Fichier page_parente.html 📋 Copier le code
<!DOCTYPE html> <html> <body> {% block mon_titre %} {% endblock %} {% block ma_liste %} {% endblock %} <p> Jetez un coup d'œil aux deux templates pour voir à quoi ils ressemblent, et views.py pour voir la référence au template enfantet comment la variable des membres se présente. </p> </body> </html>2) la page enfant :
Fichier template.html 📋 Copier le code
{% extends 'page_parente.html' %} {% block mon_titre %} <h1>Liste des membres</h1> {% endblock %} {% block ma_liste %} <ul> {% for x in membres %} <li>{{ x.prenom }}</li> {% endfor %} </ul> {% endblock %} <p>Cette page a une page parente</p>3) La page views
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') contenu = { 'membres': monmembres, } return HttpResponse(template.render(contenu, request))Une dernière chose à savoir est que si vous placer du contenu dans la balise block de la pages parentes, il ne sera ignoré et donc ne sera pas affiché, parce que dans cette page les balises block sont toujours sensées être vide.