logo oujood
🔍

La balise de template {% if %} dans Django

Contrôlez l'affichage de vos contenus en fonction de vos données : apprenez à gérer les conditions logiques directement dans vos fichiers HTML.

OUJOOD.COM

Le bloc {% if %} est l'outil indispensable pour rendre un template Django dynamique. Plutôt que d'afficher une page statique, vous pouvez décider d'afficher ou de masquer des éléments selon la valeur d'une variable envoyée depuis votre vue (le fichier views.py).

Concrètement, Django vérifie si la variable est "vraie". Une variable est considérée comme vraie si elle existe, qu'elle n'est pas vide et qu'elle n'est pas égale à False.

Syntaxe globale

  📋 Copier le code

{% 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 (La base)

C'est 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 totalement.

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 (L'alternative)

Le mot-clé 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 de la structure.

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 filet de sécurité)

Le bloc else est crucial : il permet de définir un contenu par défaut si aucune des conditions précédentes (if ou elif) n'a été rencontrée.

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 comme ==. Parfois, on veut simplement savoir si une liste contient des éléments ou si une variable existe.

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 %}

Ici, {% if liste_athlete %} vérifie si la liste existe et n'est pas vide. Si c'est le cas, on utilise le filtre |length pour afficher le nombre d'éléments.

Astuce : Pour tester ce comportement, essayez de vider la liste liste_athlete dans votre vue pour voir Django basculer automatiquement vers le elif ou le else.

Pour approfondir les opérateurs logiques, consultez notre tutoriel Python.

Par carabde | Mis à jour le 08 mai 2026