OUJOOD.COM
Variables dans les templates
Avant de commencer, créez une application dans le projet monmonde mis en place dans les chapitres précédents. Dans ce tutoriel, nous l'appelons testes — elle servira à tester tous les exemples de cette section sur le langage de template Django.
Si vous n'avez pas encore créé d'application, consultez les chapitres Créer une application, Django Views et Django Templates.
Dans un template Django, une variable s'affiche en la plaçant entre doubles accolades {{ }}. Django remplace cette balise par la valeur correspondante au moment du rendu.
<h1>Bonjour {{ variable_nom }}, comment allez-vous ?</h1>
Envoyer une variable depuis une vue
La variable affichée dans le template vient de views.py. On crée un dictionnaire appelé context, on y place les données, puis on le passe à template.render(). Chaque clé du dictionnaire devient une variable accessible dans le template.
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 = {
'variable_nom': 'Robert',
}
return HttpResponse(template.render(context, request))
Créer une variable directement dans le template
Il est aussi possible de déclarer une variable à l'intérieur du template, sans passer par la vue, grâce à la balise {% with %}. C'est utile pour éviter de répéter une valeur ou un calcul plusieurs fois dans le même template.
Fichier : templates/template.html 📋 Copier le code
{% with variable_nom = 'Robert' %}
<h1>Bonjour {{ variable_nom }}, comment allez-vous ?</h1>
{% endwith %}
Données provenant d'un modèle
En pratique, les variables d'un template viennent rarement d'une valeur codée en dur. La plupart du temps, elles proviennent d'un modèle Django — c'est-à-dire d'une table en base de données.
Dans les chapitres précédents, nous avons créé un modèle contenant une classe Membres. Pour l'utiliser dans l'application testes, il faut d'abord l'importer dans testes/models.py :
Fichier : testes/models.py 📋 Copier le code
from django.db import models
from membres.models import Membres
# les modèles de l'application testes
Ensuite, dans views.py, on récupère tous les enregistrements du modèle avec .all().values() et on les passe au template via le contexte :
Fichier : testes/views.py 📋 Copier le code
from django.http import HttpResponse
from django.template import loader
from .models import Membres
def testing(request):
mesmembres = Membres.objects.all().values()
template = loader.get_template('template.html')
context = {
'mesmembres': mesmembres,
}
return HttpResponse(template.render(context, request))
Dans le template, on parcourt les données avec la balise {% for %} pour afficher chaque enregistrement. Vous apprendrez tout sur cette balise dans le chapitre suivant.
Fichier : testes/templates/template.html 📋 Copier le code
<table>
<tr><th>Prénom</th></tr>
{% for x in mesmembres %}
<tr><td>{{ x.prenom }}</td></tr>
{% endfor %}
</table>
Par carabde | Mis à jour le 21 mai 2026