Django – Introduction aux templates

Bienvenu dans ce troisième article consacré à Django.

Nous allons maintenant voir comment Django intègre les pages HTML.

Pour cela nous allons modifier le fichier settings.py pour lui donner le répertoire ou serons placés les fichiers HTML, ce que Django nomme les templates. Commencer par ajouter le répertoire templates dans mysite/ puis modifier le fichier settings.py :

                    TEMPLATE_DIRS = (
                        "C:/mysite/templates"
                    )

Le chemin vers le dossier templates doit être absolut.

Dans le nouveau répertoire templates, créer votre premier template : home.html

                Hello Template !

Ensuite, il faut indiquer dans notre fichier view.py, que nous allons passer par un template :

                from django.shortcuts import render_to_response
                 
                def home(request):
                    return render_to_response('home.html')

Notez le changement ici on utilise render_to_response, et non plus HttpResponse, puisque nous passons maintenant par un template (home.html) alors qu’avec HttpResponse, c’est directement du HTTP qui était renvoyé. render_to_response nous permet d’injecter un certain nombre d’objet dans une page HTML pour être ensuite rendue au client dans ça forme définitive.

Relancer votre serveur puis recharger la page web :

django

Template et héritage

Maintenant que vous savez utiliser un template, regardons ce que Django nous propose pour nous faciliter la vie. Il y a bien longtemps, dans une galaxie lointaine, très lointaine.. Nous utilisions les frames et frameset pour ne pas avoir de redondance de code entre les pages web, puisque souvent le menu, le header et le footer sont les mêmes sur toutes les pages. Django nous propose un système d’héritage au niveau des pages web, voyons ça de plus près ensemble.

Créez une page web dans le dossier de template, que nous appellerons base.html :

                    <title>mon site web</title>
                 
                 
                    <h1>Mon premier site web</h1>
                    {% block content %} {% endblock %}

Ici nous voyons pour la première fois le langage de template propre à Django.
{% block content %}{% endblock %} est une déclaration de block, qui nous permettra de venir insérer à cette endroit du contenu.

Il faut maintenant modifier notre page home.html pour se servir de ce fichier :

                {% extends "base.html" %}
                 
                {% block content %}
                 
                Première page du site
                 
                {% endblock %}

Pour dire à Django que cette page va hériter de la page base.html, nous lui indiquons : {% extends « base.html » %}

Ensuite, il suffit de reprendre le ou les blocks déclaré dans la page mère, ici {% block content %}. Quand Django va rendre cette page, il va aller chercher base.html, puis y inclure les différents block. L’exemple n’est pas très parlant mais il faut imaginer que le fichier base.html est le squelette complet de notre site, cela permet de ne pas dupliquer le code, et aussi d’avoir un seule endroit à modifier pour changer l’aspect générale du site web.

Le résultat de notre page web :

site web django

Laisser un commentaire