OUJOOD.COM
Filtrer une variable dans un template Django
Syntaxe de base
Pour appliquer un filtre à une variable, on place le caractère | (pipe) juste après le nom de la variable, suivi du nom du filtre. Django évalue alors la valeur et la transforme avant de l'afficher dans la page.Syntaxe générale :
{{ nom_de_variable | nom_de_filtre }}
Le filtre upper, par exemple, met le contenu de la variable en majuscules. Voici comment l'utiliser sur une variable
prenom passée depuis la vue :Fichier template.html 📋 Copier le code
<!DOCTYPE html>
<html>
<body>
<h1>Bonjour {{prenom|upper}}, comment allez-vous ? </h1>
<p>Dans template.html on peut observer comment filtrer une variable.</p>
<p>Dans views.py on peut voir la valeur originale de la variable.</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 = {
'prenom': 'Robert',
}
return HttpResponse(template.render(context, request))
prenom vaut Robert, le template affichera ROBERT.
Enchaîner plusieurs filtres
On peut cumuler autant de filtres que nécessaire sur une même variable, en ajoutant des | supplémentaires. Les filtres s'appliquent de gauche à droite : chaque filtre reçoit le résultat du précédent.L'exemple suivant extrait le premier caractère de
prenom avec first, puis le passe en minuscules avec lower :
Fichier template.html 📋 Copier le code
<!DOCTYPE html>
<html>
<body>
<h1>Bonjour {{prenom|first|lower}}, comment allez-vous ? </h1>
<p>Dans template.html on peut observer comment filtrer une variable.</p>
<p>Dans views.py on peut voir la valeur originale de la variable.</p>
</body>
</html>
prenom = 'Robert', le résultat affiché sera r — la lettre initiale, en minuscule.
La balise {% filter %}
La balise {% filter %} va plus loin : elle applique un ou plusieurs filtres à un bloc entier de contenu, pas seulement à une variable isolée. Tout le texte compris entre {% filter %} et {% endfilter %} est traité par les filtres indiqués.Exemple simple — afficher un bloc en majuscules :
Fichier template.html 📋 Copier le code
<!DOCTYPE html> <html> <body> <h1>Bonjour tout le monde, comment allez-vous ? </h1> <p>Dans template.html on peut observer comment filtrer une variable.</p> </body> </html>
Fichier template.html 📋 Copier le code
<!DOCTYPE html>
<html>
<body>
<h1> {% filter upper|linenumbers %}Bonjour !
mon nom est
Robert.
Et toi,
comment t'appelles-tu ?{% endfilter %} </h1>
<p>Dans template.html on peut observer comment filtrer une variable.</p>
</body>
</html>
Référence des filtres Django
Voici la liste complète des filtres disponibles dans Django 5.x :| Filtre | Description |
|---|---|
| add | Ajoute une valeur spécifiée. |
| addslashes | Ajoute une barre oblique avant tout caractère de citation, pour échapper les chaînes de caractères. |
| capfirst | Retourne la première lettre en majuscule. |
| center | Centre la valeur au milieu d'une largeur spécifiée. |
| cut | Supprime tout caractère ou expression spécifiés. |
| date | Retourne les dates dans le format spécifié. |
| default | Renvoie une valeur spécifiée si la valeur est False. |
| default_if_none | Renvoie une valeur spécifiée si la valeur est None. |
| dictsort | Trie un dictionnaire selon la valeur donnée. |
| dictsortreversed | Trie un dictionnaire à l'envers, selon la valeur donnée. |
| divisibleby | Retourne True si la valeur est divisible par le nombre spécifié, False sinon. |
| escape | Échappe les caractères HTML d'une chaîne. |
| escapejs | Échappe les caractères JavaScript d'une chaîne. |
| filesizeformat | Retourne un nombre dans un format de taille de fichier lisible (Ko, Mo, Go…). |
| first | Renvoie le premier élément d'un objet, ou le premier caractère d'une chaîne. |
| floatformat | Arrondit les nombres flottants à un nombre spécifié de décimales (une par défaut). |
| force_escape | Force l'échappement HTML d'une chaîne, même si elle a déjà été marquée safe. |
| get_digit | Retourne un chiffre spécifique d'un nombre. |
| iriencode | Convertit un IRI en une chaîne compatible avec les URL. |
| join | Retourne les éléments d'une liste sous forme de chaîne, séparés par un délimiteur. |
| json_script | Retourne un objet JSON enveloppé dans des balises <script></script>. |
| last | Retourne le dernier élément d'un objet, ou le dernier caractère d'une chaîne. |
| length | Retourne le nombre d'éléments d'un objet ou le nombre de caractères d'une chaîne. |
| length_is | Retourne True si la longueur correspond au nombre spécifié. |
| linebreaks | Retourne le texte avec <br> à la place des sauts de ligne simples, et <p> pour les blocs. |
| linebreaksbr | Retourne le texte avec <br> à la place de chaque saut de ligne. |
| linenumbers | Renvoie le texte avec un numéro de ligne en préfixe pour chaque ligne. |
| ljust | Aligne la valeur à gauche dans une largeur spécifiée. |
| lower | Retourne le texte en lettres minuscules. |
| make_list | Convertit une valeur en liste de caractères ou de chiffres. |
| phone2numeric | Convertit un numéro de téléphone avec des lettres en numéro entièrement numérique. |
| pluralize | Ajoute un 's' à la fin d'une valeur si le nombre spécifié est différent de 1. |
| pprint | Affiche la valeur dans un format lisible, utile pour le débogage. |
| random | Renvoie un élément aléatoire d'un objet. |
| rjust | Aligne la valeur à droite dans une largeur spécifiée. |
| safe | Indique que ce texte est sûr et ne doit pas être échappé en HTML. |
| safeseq | Indique que chaque élément d'un objet est sûr et ne doit pas être échappé en HTML. |
| slice | Retourne une tranche spécifiée d'un texte ou d'un objet. |
| slugify | Convertit un texte en slug : tout en minuscules, espaces remplacés par des tirets, caractères spéciaux supprimés. |
| stringformat | Convertit la valeur selon un format de chaîne Python spécifié. |
| striptags | Supprime toutes les balises HTML d'un texte. |
| time | Renvoie une heure dans le format spécifié. |
| timesince | Renvoie le temps écoulé depuis une date donnée (ex. "3 jours, 2 heures"). |
| timeuntil | Renvoie le temps restant jusqu'à une date donnée. |
| title | Met en majuscule la première lettre de chaque mot, les autres en minuscules. |
| truncatechars | Tronque une chaîne au nombre de caractères spécifié. |
| truncatechars_html | Tronque une chaîne au nombre de caractères spécifié, en ignorant la longueur des balises HTML. |
| truncatewords | Tronque une chaîne au nombre de mots spécifié. |
| truncatewords_html | Tronque une chaîne au nombre de mots spécifié, en ignorant les balises HTML. |
| unordered_list | Renvoie les éléments d'un objet imbriqué sous forme de liste HTML non ordonnée. |
| upper | Retourne le texte en lettres majuscules. |
| urlencode | Encode une chaîne pour une utilisation dans une URL. |
| urlize | Transforme les URL brutes d'une chaîne en liens HTML cliquables. |
| urlizetrunc | Transforme les URL d'une chaîne en liens HTML, en tronquant leur texte au nombre de caractères spécifié. |
| wordcount | Renvoie le nombre de mots dans un texte. |
| wordwrap | Coupe les lignes à un nombre de caractères spécifié. |
| yesno | Convertit True/False/None en valeurs textuelles personnalisées. |
Par carabde | Mis à jour le 01 juin 2026