OUJOOD.COM
Le bloc {% if %} est l'outil de base pour rendre un template Django dynamique. Plutôt qu'une page figée, vous décidez d'afficher ou de masquer des éléments selon la valeur d'une variable envoyée depuis views.py.
Django considère une variable comme vraie si elle existe, qu'elle n'est pas vide et qu'elle n'est pas égale à False.
Syntaxe globale
{% if condition %}
<!-- Contenu affiché si la condition est vraie -->
{% elif autre_condition %}
<!-- Contenu affiché si la première est fausse mais celle-ci est vraie -->
{% else %}
<!-- Contenu affiché si aucune condition précédente n'est remplie -->
{% endif %}
1. L'instruction if
Le cas le plus simple : on vérifie une condition. Si elle est remplie, le bloc HTML est injecté dans la page. Sinon, Django l'ignore.
Fichier : templates/template.html 📋 Copier le code
<!DOCTYPE html>
<html>
<body>
{% if ma_variable == 1 %}
<h1>Bonjour</h1>
{% endif %}
<p>Vérifiez la valeur de ma_variable dans le fichier views.py.</p>
</body>
</html>
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')
context = {
'ma_variable': 1, # la condition sera vraie
}
return HttpResponse(template.render(context, request))
2. L'instruction elif
elif (contraction de "else if") permet de tester plusieurs conditions à la suite. Dès qu'une condition est validée, Django affiche le bloc correspondant et ignore le reste.
Fichier : templates/template.html 📋 Copier le code
<!DOCTYPE html>
<html>
<body>
{% if ma_variable == 1 %}
<h1>Bonjour</h1>
{% elif ma_variable == 2 %}
<h1>Bienvenue sur le site</h1>
{% endif %}
</body>
</html>
Fichier : views.py 📋 Copier le code
def testing(request):
template = loader.get_template('template.html')
context = {
'ma_variable': 2, # affiche "Bienvenue sur le site"
}
return HttpResponse(template.render(context, request))
3. L'instruction else
Le bloc else définit un contenu par défaut si aucune des conditions précédentes n'a été satisfaite. C'est le filet de sécurité de la structure conditionnelle.
Fichier : templates/template.html 📋 Copier le code
{% if ma_variable == 1 %}
<h1>Bonjour</h1>
{% elif ma_variable == 2 %}
<h1>Bienvenue sur le site</h1>
{% else %}
<h1>Vous êtes nouveau sur le site.</h1>
{% endif %}
Cas pratique : vérifier l'existence d'une liste
On n'utilise pas toujours des opérateurs de comparaison. Parfois, il suffit de savoir si une liste contient des éléments. {% if liste %} renvoie vrai dès que la liste est non vide — pas besoin de compter ses éléments manuellement.
Fichier : views.py 📋 Copier le code
def testing(request):
template = loader.get_template('template.html')
context = {
'liste_athlete': ['x', 'xx', 'xy'],
'liste_attente_athlete': ['a', 'b'],
}
return HttpResponse(template.render(context, request))
Fichier : templates/template.html 📋 Copier le code
{% if liste_athlete %}
Il y a : {{ liste_athlete|length }} athlètes dans la liste.
{% elif liste_attente_athlete %}
{{ liste_attente_athlete|length }} athlètes sont en attente.
{% else %}
Aucune liste d'athlètes disponible.
{% endif %}
Le filtre |length renvoie le nombre d'éléments de la liste directement dans le template. Pour tester les différents cas, videz liste_athlete dans votre vue : Django bascule automatiquement vers le elif, puis vers le else si les deux listes sont vides.
Pour approfondir les opérateurs logiques, consultez notre tutoriel Python.
Par carabde | Mis à jour le 21 mai 2026