logo oujood
🔍

Les templates dans Django

Un template Django est un fichier HTML qui peut afficher des données dynamiques transmises par une vue. Dans ce chapitre, vous créez votre premier template, vous modifiez la vue pour l'utiliser avec render(), et vous enregistrez l'application membres dans settings.py.

OUJOOD.COM

Pourquoi les templates ?

Jusqu'ici, vos vues renvoient du texte brut via HttpResponse. C'est utile pour tester, mais une vraie application web affiche des pages HTML structurées. C'est le rôle des templates : des fichiers HTML que Django remplit avec des données dynamiques avant de les envoyer au navigateur.

Un template est un fichier .html ordinaire — avec en plus une syntaxe Django pour afficher des variables, faire des boucles, appliquer des conditions. Le navigateur ne voit jamais cette syntaxe : Django la traite côté serveur et renvoie du HTML propre.

Créer le dossier templates et le premier fichier HTML

Par convention, chaque application Django stocke ses templates dans un sous-dossier templates/. Django sait où chercher à condition que l'application soit enregistrée dans settings.py — on y revient juste après.

Dans le dossier membres/, créez le dossier templates/, puis à l'intérieur créez le fichier monpremier.html. La structure doit ressembler à ça :

  📋 Copier le code

monmonde/
    manage.py
    monmonde/
    membres/
        templates/
            monpremier.html

Ouvrez monpremier.html et ajoutez ce code HTML de base :

  📋 Copier le code

<!DOCTYPE html>
<html>
<head>
    <title>Mon premier template Django</title>
</head>
<body>
    <h1>Bonjour le monde</h1>
    <p>Bienvenue dans mon premier projet Django !</p>
    <p>Ceci est mon premier fichier template.</p>
</body>
</html>

Modifier la vue pour utiliser le template

La vue doit maintenant charger le template au lieu de renvoyer du texte brut. Ouvrez membres/views.py et remplacez le contenu par :

  📋 Copier le code

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

def index(request):
    # loader.get_template() cherche le fichier dans les dossiers templates/
    template = loader.get_template('monpremier.html')
    # render() compile le template et retourne le HTML final
    return HttpResponse(template.render())

La méthode loader.get_template() localise le fichier HTML dans les dossiers templates/ de vos applications. template.render() le compile et retourne le HTML final. On passe ce HTML à HttpResponse pour l'envoyer au navigateur.

Raccourci : en pratique, on utilise directement render(request, 'monpremier.html') depuis django.shortcuts — c'est équivalent mais plus court. Vous le verrez dans les chapitres suivants.

Enregistrer l'application dans settings.py

Django ne sait pas encore que l'application membres existe. Tant qu'elle n'est pas déclarée dans INSTALLED_APPS, Django ne cherchera pas ses templates ni ses modèles. Ouvrez monmonde/settings.py et ajoutez la ligne 'membres.apps.MembresConfig' à la liste :

  📋 Copier le code

# monmonde/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Notre application membres — à ajouter en dernier
    'membres.apps.MembresConfig',
]

MembresConfig est la classe de configuration générée automatiquement dans membres/apps.py. C'est la façon recommandée d'enregistrer une application : elle donne à Django son nom, son label et ses paramètres éventuels.

Lancer le serveur et tester

Démarrez le serveur depuis le dossier contenant manage.py :

  📋 Copier le code

python manage.py runserver

Ouvrez http://127.0.0.1:8000/membres/ dans votre navigateur. La page HTML s'affiche avec le titre et les paragraphes que vous avez écrits. La vue charge maintenant un vrai template au lieu de renvoyer du texte brut.

Dans le chapitre suivant, vous allez créer un modèle de données, faire vos premières migrations, et transmettre des données réelles depuis la base de données jusqu'au template.

Par carabde | Mis à jour le 05 mai 2025