logo oujood
🔍

Django : les balises Filters

Dans Django, les filtres permettent de transformer une valeur avant de l'afficher. Ils s'appliquent avec le caractère pipe | directement sur une variable, et plusieurs filtres peuvent être enchaînés les uns après les autres.

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)) 
Si la variable 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> 
Avec 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> 
On peut aussi enchaîner plusieurs filtres dans la même balise. Ici, upper met le texte en majuscules et linenumbers préfixe chaque ligne avec son numéro :

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 :

FiltreDescription
addAjoute une valeur spécifiée.
addslashesAjoute une barre oblique avant tout caractère de citation, pour échapper les chaînes de caractères.
capfirstRetourne la première lettre en majuscule.
centerCentre la valeur au milieu d'une largeur spécifiée.
cutSupprime tout caractère ou expression spécifiés.
dateRetourne les dates dans le format spécifié.
defaultRenvoie une valeur spécifiée si la valeur est False.
default_if_noneRenvoie une valeur spécifiée si la valeur est None.
dictsortTrie un dictionnaire selon la valeur donnée.
dictsortreversedTrie un dictionnaire à l'envers, selon la valeur donnée.
divisiblebyRetourne 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.
filesizeformatRetourne un nombre dans un format de taille de fichier lisible (Ko, Mo, Go…).
firstRenvoie le premier élément d'un objet, ou le premier caractère d'une chaîne.
floatformatArrondit les nombres flottants à un nombre spécifié de décimales (une par défaut).
force_escapeForce l'échappement HTML d'une chaîne, même si elle a déjà été marquée safe.
get_digitRetourne un chiffre spécifique d'un nombre.
iriencodeConvertit un IRI en une chaîne compatible avec les URL.
joinRetourne les éléments d'une liste sous forme de chaîne, séparés par un délimiteur.
json_scriptRetourne un objet JSON enveloppé dans des balises <script></script>.
lastRetourne le dernier élément d'un objet, ou le dernier caractère d'une chaîne.
lengthRetourne le nombre d'éléments d'un objet ou le nombre de caractères d'une chaîne.
length_isRetourne True si la longueur correspond au nombre spécifié.
linebreaksRetourne le texte avec <br> à la place des sauts de ligne simples, et <p> pour les blocs.
linebreaksbrRetourne le texte avec <br> à la place de chaque saut de ligne.
linenumbersRenvoie le texte avec un numéro de ligne en préfixe pour chaque ligne.
ljustAligne la valeur à gauche dans une largeur spécifiée.
lowerRetourne le texte en lettres minuscules.
make_listConvertit une valeur en liste de caractères ou de chiffres.
phone2numericConvertit un numéro de téléphone avec des lettres en numéro entièrement numérique.
pluralizeAjoute un 's' à la fin d'une valeur si le nombre spécifié est différent de 1.
pprintAffiche la valeur dans un format lisible, utile pour le débogage.
randomRenvoie un élément aléatoire d'un objet.
rjustAligne la valeur à droite dans une largeur spécifiée.
safeIndique que ce texte est sûr et ne doit pas être échappé en HTML.
safeseqIndique que chaque élément d'un objet est sûr et ne doit pas être échappé en HTML.
sliceRetourne une tranche spécifiée d'un texte ou d'un objet.
slugifyConvertit un texte en slug : tout en minuscules, espaces remplacés par des tirets, caractères spéciaux supprimés.
stringformatConvertit la valeur selon un format de chaîne Python spécifié.
striptagsSupprime toutes les balises HTML d'un texte.
timeRenvoie une heure dans le format spécifié.
timesinceRenvoie le temps écoulé depuis une date donnée (ex. "3 jours, 2 heures").
timeuntilRenvoie le temps restant jusqu'à une date donnée.
titleMet en majuscule la première lettre de chaque mot, les autres en minuscules.
truncatecharsTronque une chaîne au nombre de caractères spécifié.
truncatechars_htmlTronque une chaîne au nombre de caractères spécifié, en ignorant la longueur des balises HTML.
truncatewordsTronque une chaîne au nombre de mots spécifié.
truncatewords_htmlTronque une chaîne au nombre de mots spécifié, en ignorant les balises HTML.
unordered_listRenvoie les éléments d'un objet imbriqué sous forme de liste HTML non ordonnée.
upperRetourne le texte en lettres majuscules.
urlencodeEncode une chaîne pour une utilisation dans une URL.
urlizeTransforme les URL brutes d'une chaîne en liens HTML cliquables.
urlizetruncTransforme les URL d'une chaîne en liens HTML, en tronquant leur texte au nombre de caractères spécifié.
wordcountRenvoie le nombre de mots dans un texte.
wordwrapCoupe les lignes à un nombre de caractères spécifié.
yesnoConvertit True/False/None en valeurs textuelles personnalisées.

Par carabde | Mis à jour le 01 juin 2026