{"title":"Balises et filtres de gabarit intégrés","version":"4.0","locale":"fr","docname":"ref/templates/builtins","url":"/fr/4.0/ref/templates/builtins/","canonical":"https://djangodocs.dev/fr/4.0/ref/templates/builtins/","summary":"Ce document décrit les balises et les filtres de gabarit intégrés dans Django. Il est recommandé d’utiliser la documentation automatique, si disponible, car…","html":"<h1>Balises et filtres de gabarit intégrés<a class=\"heading-anchor\" href=\"#built-in-template-tags-and-filters\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Ce document décrit les balises et les filtres de gabarit intégrés dans Django. Il est recommandé d’utiliser la <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/admin/admindocs/\"><span class=\"doc\">documentation automatique</span></a>, si disponible, car elle inclura aussi la documentation de tout filtre ou balise personnalisé potentiellement installé.</p>\n<section id=\"built-in-tag-reference\">\n<span id=\"ref-templates-builtins-tags\"></span><h2>Référence des balises intégrées<a class=\"heading-anchor\" href=\"#built-in-tag-reference\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"autoescape\">\n<span id=\"std-templatetag-autoescape\"></span><h3><code class=\"docutils literal notranslate\">autoescape</code><a class=\"heading-anchor\" href=\"#autoescape\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Contrôle le comportement actuel de l’échappement automatique. Cette balise accepte <code class=\"docutils literal notranslate\">on</code> ou <code class=\"docutils literal notranslate\">off</code> comme paramètre et cela détermine si l’échappement automatique est actif dans le bloc concerné. Le bloc doit être fermé par la balise fermante <code class=\"docutils literal notranslate\">endautoescape</code>.</p>\n<p>Lorsque l’échappement automatique est actif, tous les contenus de variables sont soumis à l’échappement HTML avant d’être affichés (mais après l’application de filtres éventuels). C’est équivalent à l’application manuelle du filtre <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a> à chaque variable.</p>\n<p>Les seules exceptions sont les variables qui sont déjà marquées comme « sûres » (plus besoin d’être échappées), soit par le code qui a défini la variable en question ou parce qu’elle a déjà passé par un filtre <a class=\"reference internal\" href=\"#std-templatefilter-safe\"><code class=\"xref std std-tfilter docutils literal notranslate\">safe</code></a> ou <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a>.</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">on</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">body</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"block\">\n<span id=\"std-templatetag-block\"></span><h3><code class=\"docutils literal notranslate\">block</code><a class=\"heading-anchor\" href=\"#block\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Définit un bloc pouvant être surchargé par les gabarits enfants. Voir <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/language/#template-inheritance\"><span class=\"std std-ref\">Héritage des gabarits</span></a> pour plus d’informations.</p>\n</section>\n<section id=\"comment\">\n<span id=\"std-templatetag-comment\"></span><h3><code class=\"docutils literal notranslate\">comment</code><a class=\"heading-anchor\" href=\"#comment\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ignore tout ce qui se trouve entre <code class=\"docutils literal notranslate\">{% comment %}</code> et <code class=\"docutils literal notranslate\">{% endcomment %}</code>. Une note facultative peut être insérée dans la première balise. Par exemple, cela peut être utile pour donner les raisons d’un bout de code que l’on place en commentaire.</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>Rendered text with <span class=\"cp\">{{</span> <span class=\"nv\">pub_date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;c&quot;</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">comment</span> <span class=\"s2\">&quot;Optional note&quot;</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>Commented out text with <span class=\"cp\">{{</span> <span class=\"nv\">create_date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;c&quot;</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endcomment</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Les balises <code class=\"docutils literal notranslate\">comment</code> ne peuvent pas être imbriquées.</p>\n</section>\n<section id=\"csrf-token\">\n<span id=\"std-templatetag-csrf_token\"></span><h3><code class=\"docutils literal notranslate\">csrf_token</code><a class=\"heading-anchor\" href=\"#csrf-token\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cette balise est utilisée pour la protection CSRF, comme décrit dans la documentation <a class=\"reference internal\" href=\"/fr/4.0/ref/csrf/\"><span class=\"doc\">Cross Site Request Forgeries</span></a>.</p>\n</section>\n<section id=\"cycle\">\n<span id=\"std-templatetag-cycle\"></span><h3><code class=\"docutils literal notranslate\">cycle</code><a class=\"heading-anchor\" href=\"#cycle\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche l’un de ses paramètres à chaque apparition de la balise. Le premier paramètre est affiché lors de la première apparition, le second paramètre lors de la seconde apparition, et ainsi de suite. Une fois que tous les paramètres ont été utilisés, la balise recommence avec le premier paramètre et l’affiche de nouveau.</p>\n<p>Cette balise est particulièrement utile dans une boucle :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">o</span> <span class=\"k\">in</span> <span class=\"nv\">some_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">tr</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"s1\">&#39;row2&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n        ...\n    <span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La première itération produit du code HTML se référant à la classe <code class=\"docutils literal notranslate\">row1</code>, la deuxième à <code class=\"docutils literal notranslate\">row2</code>, la troisième de nouveau à <code class=\"docutils literal notranslate\">row1</code> et ainsi de suite pour chaque itération de la boucle.</p>\n<p>Vous pouvez aussi utiliser des variables. Par exemple, si vous avez deux variables de gabarit, <code class=\"docutils literal notranslate\">rowvalue1</code> et <code class=\"docutils literal notranslate\">rowvalue2</code>, vous pouvez alterner entre leurs valeurs comme ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">o</span> <span class=\"k\">in</span> <span class=\"nv\">some_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">tr</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"nv\">rowvalue1</span> <span class=\"nv\">rowvalue2</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n        ...\n    <span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Les variables incluses dans le cycle seront échappées. Vous pouvez désactiver l’échappement automatique avec :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">o</span> <span class=\"k\">in</span> <span class=\"nv\">some_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">tr</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">off</span> <span class=\"cp\">%}{%</span> <span class=\"k\">cycle</span> <span class=\"nv\">rowvalue1</span> <span class=\"nv\">rowvalue2</span> <span class=\"cp\">%}{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n        ...\n    <span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Vous pouvez mélanger des variables et des chaînes :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">o</span> <span class=\"k\">in</span> <span class=\"nv\">some_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">tr</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"nv\">rowvalue2</span> <span class=\"s1\">&#39;row3&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n        ...\n    <span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Dans certains cas, il peut être souhaitable de se référer à la valeur actuelle du cycle sans passer à la valeur suivante. Pour cela, donnez un nom à la balise <code class=\"docutils literal notranslate\">{% cycle %}</code> via « as », comme ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"s1\">&#39;row2&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>À partir de cet instance, vous pouvez insérer la valeur actuelle du cycle chaque fois que vous en avez besoin dans votre gabarit en vous référant au nom du cycle comme variable de contexte. Si vous souhaitez faire passer le cycle à la prochaine valeur indépendamment de la balise <code class=\"docutils literal notranslate\">cycle</code> d’origine, vous pouvez utiliser une autre balise <code class=\"docutils literal notranslate\">cycle</code> et indiquer le nom de la variable. Ainsi, le gabarit suivant :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"s1\">&#39;row2&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>affichera :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;row1&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;row1&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;row2&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">td</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;row2&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">td</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Vous pouvez utiliser autant de valeurs que nécessaire dans une balise <code class=\"docutils literal notranslate\">cycle</code>, séparées par des espaces. Les valeurs entourées de guillemets simples (<code class=\"docutils literal notranslate\">'</code>)  ou doubles (<code class=\"docutils literal notranslate\">&quot;</code>) sont traitées comme des chaînes littérales, alors que les valeurs sans guillemets sont traitées comme des variables de gabarit.</p>\n<p>Par défaut, lorsque vous utilisez le mot-clé <code class=\"docutils literal notranslate\">as</code> avec la balise <code class=\"docutils literal notranslate\">cycle</code>, l’utilisation de <code class=\"docutils literal notranslate\">{% cycle %}</code> qui démarre le cycle produira elle-même la première valeur du cycle. Cela peut poser problème si vous souhaitez exploiter la valeur dans une boucle imbriquée ou un gabarit inclus. Si vous ne voulez que déclarer le cycle mais sans produire la première valeur, vous pouvez ajouter un mot-clé <code class=\"docutils literal notranslate\">silent</code> comme dernier mot-clé de la balise. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">obj</span> <span class=\"k\">in</span> <span class=\"nv\">some_list</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"s1\">&#39;row2&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">rowcolors</span> <span class=\"nv\">silent</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">tr</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;subtemplate.html&quot;</span> <span class=\"cp\">%}</span><span class=\"p\">&lt;/</span><span class=\"nt\">tr</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Ceci va afficher une liste d’éléments <code class=\"docutils literal notranslate\">&lt;tr&gt;</code> avec l’attribut <code class=\"docutils literal notranslate\">class</code> alternant entre <code class=\"docutils literal notranslate\">row1</code> et <code class=\"docutils literal notranslate\">row2</code>. Le sous-gabarit aura accès à <code class=\"docutils literal notranslate\">rowcolors</code> dans son contexte et sa valeur correspondra à la valeur de <code class=\"docutils literal notranslate\">class</code> de la balise <code class=\"docutils literal notranslate\">&lt;tr&gt;</code> qui l’entoure. Si on avait omis d’ajouter le mot-clé <code class=\"docutils literal notranslate\">silent</code>, <code class=\"docutils literal notranslate\">row1</code> et <code class=\"docutils literal notranslate\">row2</code> auraient été affichés comme du texte normal, en dehors de l’élément <code class=\"docutils literal notranslate\">&lt;tr&gt;</code>.</p>\n<p>Lorsque le mot-clé <code class=\"docutils literal notranslate\">silent</code> est utilisé dans une définition de cycle, cela s’applique automatiquement à toutes les utilisations ultérieures de cette balise <code class=\"docutils literal notranslate\">cycle</code> spécifique. Le gabarit suivant n’affiche <em>rien</em>, même si le second appel à <code class=\"docutils literal notranslate\">{% cycle %}</code> ne précise pas <code class=\"docutils literal notranslate\">silent</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;row1&#39;</span> <span class=\"s1\">&#39;row2&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">rowcolors</span> <span class=\"nv\">silent</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"nv\">rowcolors</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Il est possible d’utiliser la balise <a class=\"reference internal\" href=\"#std-templatetag-resetcycle\"><code class=\"xref std std-ttag docutils literal notranslate\">resetcycle</code></a> pour réinitialiser une balise <code class=\"docutils literal notranslate\">{% cycle %}</code> à sa première valeur lors de sa prochaine apparition.</p>\n</section>\n<section id=\"debug\">\n<span id=\"std-templatetag-debug\"></span><h3><code class=\"docutils literal notranslate\">debug</code><a class=\"heading-anchor\" href=\"#debug\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche un gros bloc d’informations de débogage, y compris le contexte actuel et les modules importés. <code class=\"docutils literal notranslate\">{% debug %}</code> n’affiche rien lorsque le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> vaut <code class=\"docutils literal notranslate\">False</code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"2.2.27\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 2.2.27</p><p>Dans les anciennes versions, les informations de débogage étaient aussi affichées lorsque le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> valait <code class=\"docutils literal notranslate\">False</code>.</p>\n</aside>\n</section>\n<section id=\"extends\">\n<span id=\"std-templatetag-extends\"></span><h3><code class=\"docutils literal notranslate\">extends</code><a class=\"heading-anchor\" href=\"#extends\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Indique que ce gabarit étend un gabarit parent.</p>\n<p>Cette balise peut être utilisée de deux façons :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">{% extends &quot;base.html&quot; %}</code> (avec guillemets) utilise la valeur littérale <code class=\"docutils literal notranslate\">&quot;base.html&quot;</code> comme nom du gabarit parent à étendre.</p></li>\n<li><p><code class=\"docutils literal notranslate\">{% extends variable %}</code> utilise la valeur de <code class=\"docutils literal notranslate\">variable</code>. Si la variable contient une chaîne de caractères, Django utilise celle-ci comme nom du gabarit parent. Si la variable contient un objet <code class=\"docutils literal notranslate\">Template</code>, Django utilise cet objet comme gabarit parent.</p></li>\n</ul>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/language/#template-inheritance\"><span class=\"std std-ref\">Héritage de gabarits</span></a> pour plus d’informations.</p>\n<p>En principe, le nom du gabarit est relatif au répertoire racine du chargeur de gabarits. Un paramètre textuel peut aussi être un chemin relatif commençant par <code class=\"docutils literal notranslate\">./</code> ou <code class=\"docutils literal notranslate\">../</code>. Par exemple, en admettant la structure de répertoires suivante :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>dir1/\n    template.html\n    base2.html\n    my/\n        base3.html\nbase1.html\n</code></pre></div>\n<p>Dans <code class=\"docutils literal notranslate\">template.html</code>, les chemins suivants seraient valides :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;./base2.html&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;../base1.html&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;./my/base3.html&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"filter\">\n<span id=\"std-templatetag-filter\"></span><h3><code class=\"docutils literal notranslate\">filter</code><a class=\"heading-anchor\" href=\"#filter\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Filtre le contenu du bloc au travers d’un ou plusieurs filtres. Plusieurs filtres doivent être séparés par la barre verticale et les filtres peuvent posséder des paramètres, tout comme dans la syntaxe des variables.</p>\n<p>Notez que le bloc inclus <em>tout</em> le texte entre les balises <code class=\"docutils literal notranslate\">filter</code> et <code class=\"docutils literal notranslate\">endfilter</code>.</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">filter</span> <span class=\"nf\">force_escape</span><span class=\"o\">|</span><span class=\"nf\">lower</span> <span class=\"cp\">%}</span>\n    This text will be HTML-escaped, and will appear in all lowercase.\n<span class=\"cp\">{%</span> <span class=\"k\">endfilter</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Les filtres <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a> et <a class=\"reference internal\" href=\"#std-templatefilter-safe\"><code class=\"xref std std-tfilter docutils literal notranslate\">safe</code></a> ne sont pas des paramètres acceptables. Vous pouvez toujours utiliser la balise <a class=\"reference internal\" href=\"#std-templatetag-autoescape\"><code class=\"xref std std-ttag docutils literal notranslate\">autoescape</code></a> pour gérer l’échappement automatique dans des blocs de code de gabarit.</p>\n</aside>\n</section>\n<section id=\"firstof\">\n<span id=\"std-templatetag-firstof\"></span><h3><code class=\"docutils literal notranslate\">firstof</code><a class=\"heading-anchor\" href=\"#firstof\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche le premier paramètre qui ne vaut pas « faux » (c’est-à-dire qu’il existe, qu’il n’est pas vide, qu’il ne contient pas la valeur booléenne faux et qu’il ne contient pas la valeur numérique 0). N’affiche rien si toutes les valeurs transmises valent « faux ».</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">firstof</span> <span class=\"nv\">var1</span> <span class=\"nv\">var2</span> <span class=\"nv\">var3</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>C’est l’équivalent de :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">var1</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">var1</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">elif</span> <span class=\"nv\">var2</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">var2</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">elif</span> <span class=\"nv\">var3</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">var3</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Vous pouvez aussi utiliser une chaîne littérale comme valeur de repli dans le cas où toutes les variables spécifiées valent <code class=\"docutils literal notranslate\">False</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">firstof</span> <span class=\"nv\">var1</span> <span class=\"nv\">var2</span> <span class=\"nv\">var3</span> <span class=\"s2\">&quot;fallback value&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Cette balise échappe automatiquement les valeurs des variables. Vous pouvez désactiver l’échappement automatique avec :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">off</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">firstof</span> <span class=\"nv\">var1</span> <span class=\"nv\">var2</span> <span class=\"nv\">var3</span> <span class=\"s2\">&quot;&lt;strong&gt;fallback value&lt;/strong&gt;&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Ou si seulement certaines variables doivent être échappées, vous pouvez employer :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">firstof</span> <span class=\"nv\">var1</span> <span class=\"nv\">var2</span><span class=\"o\">|</span><span class=\"nf\">safe</span> <span class=\"nv\">var3</span> <span class=\"s2\">&quot;&lt;strong&gt;fallback value&lt;/strong&gt;&quot;</span><span class=\"o\">|</span><span class=\"nf\">safe</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Vous pouvez utiliser la syntaxe <code class=\"docutils literal notranslate\">{% firstof var1 var2 var3 as value %}</code> pour stocker le résultat dans une variable.</p>\n</section>\n<section id=\"for\">\n<span id=\"std-templatetag-for\"></span><h3><code class=\"docutils literal notranslate\">for</code><a class=\"heading-anchor\" href=\"#for\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Effectue une boucle sur chaque élément d’une liste, rendant disponible la valeur dans une variable de contexte. Par exemple, pour afficher une liste des athlètes contenus dans <code class=\"docutils literal notranslate\">athlete_list</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">athlete</span> <span class=\"k\">in</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">athlete.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Vous pouvez effectuer une boucle inversée sur une liste en utilisant {% for obj in list reversed %}`.</p>\n<p>Si vous devez effectuer une boucle sur une liste de listes, vous pouvez isoler les valeurs de chaque sous-liste dans des variables individuelles. Par exemple, si votre contexte contient une liste de coordonnées (x, y) appelée <code class=\"docutils literal notranslate\">points</code>, voici comment vous pouvez afficher la liste des points :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">x</span><span class=\"o\">,</span> <span class=\"nv\">y</span> <span class=\"k\">in</span> <span class=\"nv\">points</span> <span class=\"cp\">%}</span>\n    There is a point at <span class=\"cp\">{{</span> <span class=\"nv\">x</span> <span class=\"cp\">}}</span>,<span class=\"cp\">{{</span> <span class=\"nv\">y</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Cela peut aussi être utile si vous avez besoin d’accéder aux éléments d’un dictionnaire. Par exemple, si votre contexte contient un dictionnaire <code class=\"docutils literal notranslate\">data</code>, le code suivant affiche les clés et les valeurs de ce dictionnaire :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">key</span><span class=\"o\">,</span> <span class=\"nv\">value</span> <span class=\"k\">in</span> <span class=\"nv\">data.items</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">key</span> <span class=\"cp\">}}</span>: <span class=\"cp\">{{</span> <span class=\"nv\">value</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>N’oubliez pas que pour l’opérateur point, la recherche de clé de dictionnaire est prioritaire par rapport à la recherche de méthode. Ainsi, si le dictionnaire <code class=\"docutils literal notranslate\">data</code> contient une clé nommée <code class=\"docutils literal notranslate\">'items'</code>, <code class=\"docutils literal notranslate\">data.items</code> renvoie <code class=\"docutils literal notranslate\">data['items']</code> au lieu de <code class=\"docutils literal notranslate\">data.items()</code>. Évitez d’ajouter des clés qui ont le même nom que des méthodes de dictionnaire si vous voulez utilisez ces méthodes dans les gabarits (<code class=\"docutils literal notranslate\">items</code>, <code class=\"docutils literal notranslate\">values</code>, <code class=\"docutils literal notranslate\">keys</code>, etc.). Vous trouverez plus de détails sur l’ordre de recherche de l’opérateur point dans la <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/language/#template-variables\"><span class=\"std std-ref\">documentation des variables de gabarit</span></a>.</p>\n<p>La boucle <code class=\"docutils literal notranslate\">for</code> définit un certain nombre de variables disponibles à l’intérieur de la boucle :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Variable</p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">forloop.counter</code></p></td>\n<td><p>L’itération actuelle de la boucle (index à partir de 1)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">forloop.counter0</code></p></td>\n<td><p>L’itération actuelle de la boucle (index à partir de 0)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">forloop.revcounter</code></p></td>\n<td><p>Le nombre d’itérations à partir de la fin de la boucle (index à partir de 1)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">forloop.revcounter0</code></p></td>\n<td><p>Le nombre d’itérations à partir de la fin de la boucle (index à partir de 0)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">forloop.first</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">True</code> si la boucle est dans sa première itération</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">forloop.last</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">True</code> si la boucle est dans sa dernière itération</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">forloop.parentloop</code></p></td>\n<td><p>Pour les boucles imbriquées, il s’agit de la boucle de niveau supérieur</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"for-empty\">\n<h3><code class=\"docutils literal notranslate\">for</code> … <code class=\"docutils literal notranslate\">empty</code><a class=\"heading-anchor\" href=\"#for-empty\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La balise <code class=\"docutils literal notranslate\">for</code> accepte une clause facultative <code class=\"docutils literal notranslate\">{% empty %}</code> dont le contenu est affiché si la liste en paramètre est vide ou est introuvable :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">athlete</span> <span class=\"k\">in</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">athlete.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">empty</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Sorry, no athletes in this list.<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Le code ci-dessus est équivalent, mais plus court, plus propre et peut-être plus rapide que ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n  <span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">athlete</span> <span class=\"k\">in</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n      <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">athlete.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n  <span class=\"cp\">{%</span> <span class=\"k\">else</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Sorry, no athletes in this list.<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n  <span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"if\">\n<span id=\"std-templatetag-if\"></span><h3><code class=\"docutils literal notranslate\">if</code><a class=\"heading-anchor\" href=\"#if\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La balise <code class=\"docutils literal notranslate\">{% if %}</code> évalue une variable et si celle-ci vaut <code class=\"docutils literal notranslate\">True</code> (c’est-à-dire qu’elle existe, n’est pas vide et ne contient pas la valeur booléenne faux), le contenu du bloc est affiché :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n    Number of athletes: <span class=\"cp\">{{</span> <span class=\"nv\">athlete_list</span><span class=\"o\">|</span><span class=\"nf\">length</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">elif</span> <span class=\"nv\">athlete_in_locker_room_list</span> <span class=\"cp\">%}</span>\n    Athletes should be out of the locker room soon!\n<span class=\"cp\">{%</span> <span class=\"k\">else</span> <span class=\"cp\">%}</span>\n    No athletes.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Dans l’exemple ci-dessus, si <code class=\"docutils literal notranslate\">athlete_list</code> n’est pas vide, le nombre d’athlètes est affiché par la variable <code class=\"docutils literal notranslate\">{{ athlete_list|length }}</code>.</p>\n<p>Comme vous pouvez le voir, la balise <code class=\"docutils literal notranslate\">if</code> accepte une ou plusieurs clauses <code class=\"docutils literal notranslate\">{% elif %}</code> ou une clause <code class=\"docutils literal notranslate\">{% else %}</code> dont le contenu est affiché si toutes les conditions précédentes ont échoué. Ces clauses sont facultatives.</p>\n<section id=\"boolean-operators\">\n<h4>Opérateurs booléens<a class=\"heading-anchor\" href=\"#boolean-operators\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Les balises <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a> peuvent utiliser <code class=\"docutils literal notranslate\">and</code> (et), <code class=\"docutils literal notranslate\">or</code> (ou) ou <code class=\"docutils literal notranslate\">not</code> (non) pour tester un certain nombre de variables ou pour inverser la valeur d’une variable donnée :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"k\">and</span> <span class=\"nv\">coach_list</span> <span class=\"cp\">%}</span>\n    Both athletes and coaches are available.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"k\">not</span> <span class=\"nv\">athlete_list</span> <span class=\"cp\">%}</span>\n    There are no athletes.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"k\">or</span> <span class=\"nv\">coach_list</span> <span class=\"cp\">%}</span>\n    There are some athletes or some coaches.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"k\">not</span> <span class=\"nv\">athlete_list</span> <span class=\"k\">or</span> <span class=\"nv\">coach_list</span> <span class=\"cp\">%}</span>\n    There are no athletes or there are some coaches.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"k\">and</span> <span class=\"k\">not</span> <span class=\"nv\">coach_list</span> <span class=\"cp\">%}</span>\n    There are some athletes and absolutely no coaches.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>L’utilisation à la fois de <code class=\"docutils literal notranslate\">and</code> et de <code class=\"docutils literal notranslate\">or</code> dans la même balise est permise, tenant compte que <code class=\"docutils literal notranslate\">and</code> a une plus grande priorité que <code class=\"docutils literal notranslate\">or</code>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">athlete_list</span> <span class=\"k\">and</span> <span class=\"nv\">coach_list</span> <span class=\"k\">or</span> <span class=\"nv\">cheerleader_list</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>sera interprété comme :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"k\">if</span> <span class=\"p\">(</span>athlete_list <span class=\"ow\">and</span> coach_list<span class=\"p\">)</span> <span class=\"ow\">or</span> cheerleader_list\n</code></pre></div>\n<p>L’emploi de parenthèses dans la balise <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a> est une erreur de syntaxe. Si vous en avez besoin pour modifier la priorité des opérateurs, vous devez passer par des balises <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a> imbriquées.</p>\n<p>Les balises <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a> peuvent également utiliser les opérateurs <code class=\"docutils literal notranslate\">==</code>, <code class=\"docutils literal notranslate\">!=</code>, <code class=\"docutils literal notranslate\">&lt;</code>, <code class=\"docutils literal notranslate\">&gt;</code>, <code class=\"docutils literal notranslate\">&lt;=</code>, <code class=\"docutils literal notranslate\">&gt;=</code>, <code class=\"docutils literal notranslate\">in</code> (dans), <code class=\"docutils literal notranslate\">not in</code>, <code class=\"docutils literal notranslate\">is</code> et <code class=\"docutils literal notranslate\">is not</code> qui fonctionnent comme suit :</p>\n<section id=\"operator\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">==</code><a class=\"heading-anchor\" href=\"#operator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Égalité. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;x&quot;</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar equals the string &quot;x&quot;\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"id1\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">!=</code><a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Inégalité. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">!=</span> <span class=\"s2\">&quot;x&quot;</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar does not equal the string &quot;x&quot;,\n  or if somevar is not found in the context\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"id2\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">&lt;</code><a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Inférieur à. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">&lt;</span> <span class=\"m\">100</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar is less than 100.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"id3\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">&gt;</code><a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Supérieur à. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">&gt;</span> <span class=\"m\">0</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar is greater than 0.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"id4\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">&lt;=</code><a class=\"heading-anchor\" href=\"#id4\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Inférieur ou égal à. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">&lt;=</span> <span class=\"m\">100</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar is less than 100 or equal to 100.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"id5\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">&gt;=</code><a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Supérieur ou égal à. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"o\">&gt;=</span> <span class=\"m\">1</span> <span class=\"cp\">%}</span>\n  This appears if variable somevar is greater than 1 or equal to 1.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"in-operator\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">in</code><a class=\"heading-anchor\" href=\"#in-operator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Contenu dans. Cet opérateur est pris en charge par de nombreux conteneurs Python pour tester si la valeur donnée se trouve dans le conteneur. Le code suivant montre quelques exemples d’interprétation de <code class=\"docutils literal notranslate\">x in y</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"s2\">&quot;bc&quot;</span> <span class=\"k\">in</span> <span class=\"s2\">&quot;abcdef&quot;</span> <span class=\"cp\">%}</span>\n  This appears since &quot;bc&quot; is a substring of &quot;abcdef&quot;\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"s2\">&quot;hello&quot;</span> <span class=\"k\">in</span> <span class=\"nv\">greetings</span> <span class=\"cp\">%}</span>\n  If greetings is a list or set, one element of which is the string\n  &quot;hello&quot;, this will appear.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">user</span> <span class=\"k\">in</span> <span class=\"nv\">users</span> <span class=\"cp\">%}</span>\n  If users is a QuerySet, this will appear if user is an\n  instance that belongs to the QuerySet.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"not-in-operator\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">not in</code><a class=\"heading-anchor\" href=\"#not-in-operator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Non contenu dans. C’est la négation de l’opérateur <code class=\"docutils literal notranslate\">in</code>.</p>\n</section>\n<section id=\"is-operator\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">is</code><a class=\"heading-anchor\" href=\"#is-operator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Identité d’objet. Teste si deux valeurs sont le même objet. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"k\">is</span> <span class=\"nf\">True</span> <span class=\"cp\">%}</span>\n  This appears if and only if somevar is True.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"k\">is</span> <span class=\"nf\">None</span> <span class=\"cp\">%}</span>\n  This appears if somevar is None, or if somevar is not found in the context.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"is-not-operator\">\n<h5>Opérateur <code class=\"docutils literal notranslate\">is not</code><a class=\"heading-anchor\" href=\"#is-not-operator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Négation d’identité d’objet. Teste si deux valeurs ne sont pas le même objet. C’est la négation de l’opérateur <code class=\"docutils literal notranslate\">is</code>. Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"k\">is</span> <span class=\"k\">not</span> <span class=\"nf\">True</span> <span class=\"cp\">%}</span>\n  This appears if somevar is not True, or if somevar is not found in the\n  context.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">somevar</span> <span class=\"k\">is</span> <span class=\"k\">not</span> <span class=\"nf\">None</span> <span class=\"cp\">%}</span>\n  This appears if and only if somevar is not None.\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"filters\">\n<h4>Filtres<a class=\"heading-anchor\" href=\"#filters\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Vous pouvez aussi utiliser des filtres dans l’expression <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">messages</span><span class=\"o\">|</span><span class=\"nf\">length</span> <span class=\"o\">&gt;=</span> <span class=\"m\">100</span> <span class=\"cp\">%}</span>\n   You have lots of messages today!\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"complex-expressions\">\n<h4>Expressions complexes<a class=\"heading-anchor\" href=\"#complex-expressions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Tous les éléments ci-dessus peuvent être combinés pour former des expressions complexes. Pour de telles expressions, il peut être important de savoir comment les opérateurs sont groupés au moment de l’évaluation de l’expression, c’est-à-dire les règles de priorité appliquées. La priorité des opérateurs, de la plus faible à la plus élevée, est dans cet ordre :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">or</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">and</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">not</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">in</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">==</code>, <code class=\"docutils literal notranslate\">!=</code>, <code class=\"docutils literal notranslate\">&lt;</code>, <code class=\"docutils literal notranslate\">&gt;</code>, <code class=\"docutils literal notranslate\">&lt;=</code>, <code class=\"docutils literal notranslate\">&gt;=</code></p></li>\n</ul>\n<p>(Ceci suit exactement le comportement Python). Ainsi, par exemple, la balise <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a> complexe suivante :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">a</span> <span class=\"o\">==</span> <span class=\"nv\">b</span> <span class=\"k\">or</span> <span class=\"nv\">c</span> <span class=\"o\">==</span> <span class=\"nv\">d</span> <span class=\"k\">and</span> <span class=\"nv\">e</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>…sera interprétée comme :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">(</span>a <span class=\"o\">==</span> b<span class=\"p\">)</span> <span class=\"ow\">or</span> <span class=\"p\">((</span>c <span class=\"o\">==</span> d<span class=\"p\">)</span> <span class=\"ow\">and</span> e<span class=\"p\">)</span>\n</code></pre></div>\n<p>Si vous devez modifier la priorité, il faudra imbriquer les balises <a class=\"reference internal\" href=\"#std-templatetag-if\"><code class=\"xref std std-ttag docutils literal notranslate\">if</code></a>. C’est parfois plus lisible aussi, notamment pour ceux qui ne sont pas très au clair au sujet des règles de priorité.</p>\n<p>Les opérateurs de comparaison ne peuvent pas être enchaînés comme en Python ou en notation mathématique. Par exemple, au lieu d’écrire :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">a</span> <span class=\"o\">&gt;</span> <span class=\"nv\">b</span> <span class=\"o\">&gt;</span> <span class=\"nv\">c</span> <span class=\"cp\">%}</span>  (WRONG)\n</code></pre></div>\n<p>vous devez écrire :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">a</span> <span class=\"o\">&gt;</span> <span class=\"nv\">b</span> <span class=\"k\">and</span> <span class=\"nv\">b</span> <span class=\"o\">&gt;</span> <span class=\"nv\">c</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"ifchanged\">\n<span id=\"std-templatetag-ifchanged\"></span><h3><code class=\"docutils literal notranslate\">ifchanged</code><a class=\"heading-anchor\" href=\"#ifchanged\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Vérifie si une valeur a changé depuis l’itération précédente d’une boucle.</p>\n<p>La balise de bloc <code class=\"docutils literal notranslate\">{% ifchanged %}</code> est employée dans une boucle. Elle présente deux utilisations possibles.</p>\n<ol class=\"arabic\">\n<li><p>Vérifie son propre contenu à afficher comparé à son état précédent et n’affiche le contenu que s’il a changé. Par exemple, le code suivant affiche une liste de jours, n’affichant le mois que lorsqu’il change :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>Archive for <span class=\"cp\">{{</span> <span class=\"nv\">year</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">date</span> <span class=\"k\">in</span> <span class=\"nv\">days</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">ifchanged</span> <span class=\"cp\">%}</span><span class=\"p\">&lt;</span><span class=\"nt\">h3</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;F&quot;</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">h3</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endifchanged</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;M/d&quot;</span><span class=\"o\">|</span><span class=\"nf\">lower</span> <span class=\"cp\">}}</span><span class=\"s\">/&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;j&quot;</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Si la balise reçoit une ou plusieurs variables, elle vérifie si l’une des variables a changé. Par exemple, le code suivant affiche la date chaque fois qu’elle change et n’affiche l’heure que si l’heure ou la date a changé :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">date</span> <span class=\"k\">in</span> <span class=\"nv\">days</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">ifchanged</span> <span class=\"nv\">date.date</span> <span class=\"cp\">%}</span> <span class=\"cp\">{{</span> <span class=\"nv\">date.date</span> <span class=\"cp\">}}</span> <span class=\"cp\">{%</span> <span class=\"k\">endifchanged</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">ifchanged</span> <span class=\"nv\">date.hour</span> <span class=\"nv\">date.date</span> <span class=\"cp\">%}</span>\n        <span class=\"cp\">{{</span> <span class=\"nv\">date.hour</span> <span class=\"cp\">}}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endifchanged</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n</ol>\n<p>La balise <code class=\"docutils literal notranslate\">ifchanged</code> accepte aussi une clause facultative <code class=\"docutils literal notranslate\">{% else %}</code> qui affiche son contenu si la valeur n’a pas changé :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">match</span> <span class=\"k\">in</span> <span class=\"nv\">matches</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">div</span> <span class=\"na\">style</span><span class=\"o\">=</span><span class=\"s\">&quot;background-color:</span>\n<span class=\"s\">        </span><span class=\"cp\">{%</span> <span class=\"k\">ifchanged</span> <span class=\"nv\">match.ballot_id</span> <span class=\"cp\">%}</span>\n<span class=\"s\">            </span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s2\">&quot;red&quot;</span> <span class=\"s2\">&quot;blue&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"s\">        </span><span class=\"cp\">{%</span> <span class=\"k\">else</span> <span class=\"cp\">%}</span>\n<span class=\"s\">            gray</span>\n<span class=\"s\">        </span><span class=\"cp\">{%</span> <span class=\"k\">endifchanged</span> <span class=\"cp\">%}</span>\n<span class=\"s\">    &quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">match</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"include\">\n<span id=\"std-templatetag-include\"></span><h3><code class=\"docutils literal notranslate\">include</code><a class=\"heading-anchor\" href=\"#include\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Charge un gabarit et l’affiche avec le contexte en cours. C’est une manière d’inclure d’autres gabarits dans un gabarit.</p>\n<p>Le nom du gabarit peut être soit une variable, soit une chaîne fixe entre guillemets, simples ou doubles.</p>\n<p>Cet exemple inclut le contenu du gabarit <code class=\"docutils literal notranslate\">&quot;foo/bar.html&quot;</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;foo/bar.html&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>En principe, le nom du gabarit est relatif au répertoire racine du chargeur de gabarits. Un paramètre textuel peut aussi être un chemin relatif commençant par <code class=\"docutils literal notranslate\">./</code> ou <code class=\"docutils literal notranslate\">../</code>, comme expliqué dans la documentation de la balise <a class=\"reference internal\" href=\"#std-templatetag-extends\"><code class=\"xref std std-ttag docutils literal notranslate\">extends</code></a>.</p>\n<p>Cet exemple inclut le contenu du gabarit dont le nom est contenu dans la variable <code class=\"docutils literal notranslate\">template_name</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"nv\">template_name</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La variable peut aussi être tout objet possédant une méthode <code class=\"docutils literal notranslate\">render()</code> acceptant un contexte. Cela permet de référencer un objet <code class=\"docutils literal notranslate\">Template</code> compilé dans votre contexte.</p>\n<p>De plus, la variable peut être un itérable de noms de gabarits, auquel cas le premier pouvant être chargé sera utilisé, selon <a class=\"reference internal\" href=\"/fr/4.0/topics/templates/#django.template.loader.select_template\" title=\"django.template.loader.select_template\"><code class=\"xref py py-func docutils literal notranslate\">select_template()</code></a>.</p>\n<p>Un gabarit inclus est affiché dans le contexte du gabarit qui l’inclut. Cet exemple produit le résultat <code class=\"docutils literal notranslate\">&quot;Hello, John!&quot;</code>:</p>\n<ul>\n<li><p>Contexte : la variable <code class=\"docutils literal notranslate\">person</code> contient <code class=\"docutils literal notranslate\">&quot;John&quot;</code> et la variable <code class=\"docutils literal notranslate\">greeting</code> contient <code class=\"docutils literal notranslate\">&quot;Hello&quot;</code>.</p></li>\n<li><p>Gabarit :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;name_snippet.html&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Le gabarit <code class=\"docutils literal notranslate\">name_snippet.html</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">greeting</span> <span class=\"cp\">}}</span>, <span class=\"cp\">{{</span> <span class=\"nv\">person</span><span class=\"o\">|</span><span class=\"nf\">default</span><span class=\"s2\">:&quot;friend&quot;</span> <span class=\"cp\">}}</span>!\n</code></pre></div>\n</li>\n</ul>\n<p>Vous pouvez transmettre du contexte supplémentaire au gabarit en utilisant des paramètres nommés :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;name_snippet.html&quot;</span> <span class=\"k\">with</span> <span class=\"nv\">person</span><span class=\"o\">=</span><span class=\"s2\">&quot;Jane&quot;</span> <span class=\"nv\">greeting</span><span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Si vous souhaitez rendre le contexte avec seulement les variables indiquées (ou même sans variable du tout), utilisez l’option <code class=\"docutils literal notranslate\">only</code>. Aucune autre variable n’est alors disponible dans le gabarit inclus :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;name_snippet.html&quot;</span> <span class=\"k\">with</span> <span class=\"nv\">greeting</span><span class=\"o\">=</span><span class=\"s2\">&quot;Hi&quot;</span> <span class=\"nv\">only</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>La balise <a class=\"reference internal\" href=\"#std-templatetag-include\"><code class=\"xref std std-ttag docutils literal notranslate\">include</code></a> doit être considérée comme une implémentation de « effectuer le rendu de ce sous-gabarit et inclure le HTML résultant », et non pas « analyser ce sous-gabarit et inclure son contenu comme s’il faisait partie du parent ». Cela signifie qu’il n’y a pas d’état partagé entre les gabarits inclus, chaque inclusion faisant l’objet d’un processus de rendu totalement autonome.</p>\n<p>Les blocs sont évalués <em>avant</em> d’être inclus. Cela signifie qu’un gabarit qui inclut des blocs d’un autre contiendra des blocs qui ont <em>déjà été évalués et produits</em>, et non pas des blocs qui peuvent être surchargés, par exemple par un gabarit d’extension.</p>\n</aside>\n</section>\n<section id=\"load\">\n<span id=\"std-templatetag-load\"></span><h3><code class=\"docutils literal notranslate\">load</code><a class=\"heading-anchor\" href=\"#load\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Charge un lot de balises de gabarit personnalisées.</p>\n<p>Par exemple, le gabarit suivant charge toutes les balises et tous les filtres enregistrés dans <code class=\"docutils literal notranslate\">somelibrary</code> et dans <code class=\"docutils literal notranslate\">otherlibrary</code> se trouvant dans le paquet <code class=\"docutils literal notranslate\">package</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">somelibrary</span> <span class=\"nv\">package.otherlibrary</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Vous pouvez aussi charger de manière sélective des filtres ou des balises à partir d’une bibliothèque avec le paramètre <code class=\"docutils literal notranslate\">from</code>. Dans cet exemple, les balises/filtres de gabarit <code class=\"docutils literal notranslate\">foo</code> et <code class=\"docutils literal notranslate\">bar</code> sont chargés à partir de <code class=\"docutils literal notranslate\">somelibrary</code>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">foo</span> <span class=\"nv\">bar</span> <span class=\"nv\">from</span> <span class=\"nv\">somelibrary</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/howto/custom-template-tags/\"><span class=\"doc\">Bibliothèques de balises et de filtres personnalisés</span></a> pour plus d’informations.</p>\n</section>\n<section id=\"lorem\">\n<span id=\"std-templatetag-lorem\"></span><h3><code class=\"docutils literal notranslate\">lorem</code><a class=\"heading-anchor\" href=\"#lorem\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche du texte latin aléatoire « lorem ipsum ». C’est pratique pour produire des données d’exemple dans les gabarits.</p>\n<p>Utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">lorem</span> <span class=\"o\">[</span><span class=\"nv\">count</span><span class=\"o\">]</span> <span class=\"o\">[</span><span class=\"nv\">method</span><span class=\"o\">]</span> <span class=\"o\">[</span><span class=\"nv\">random</span><span class=\"o\">]</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La balise <code class=\"docutils literal notranslate\">{% lorem %}</code> peut être utilisée avec zéro, un, deux ou trois paramètres. Ces paramètres sont :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Paramètre</p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">count</code></p></td>\n<td><p>Un nombre (ou une variable) contenant le nombre de paragraphes ou de mots à produire (1 par défaut).</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">method</code></p></td>\n<td><p>Indiquez <code class=\"docutils literal notranslate\">w</code> pour des mots, <code class=\"docutils literal notranslate\">p</code> pour des paragraphes HTML ou <code class=\"docutils literal notranslate\">b</code> pour des blocs de paragraphe de texte brut (<code class=\"docutils literal notranslate\">b</code> est la valeur par défaut).</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">random</code></p></td>\n<td><p>Le mot <code class=\"docutils literal notranslate\">random</code>, quand il est indiqué, n’utilise pas le paragraphe connu (« Lorem ipsum dolor sit amet… ») lors de la production de texte.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Exemples :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">{% lorem %}</code> produit le paragraphe habituel « lorem ipsum ».</p></li>\n<li><p><code class=\"docutils literal notranslate\">{% lorem 3 p %}</code> produit le paragraphe habituel « lorem ipsum » ainsi que deux paragraphes aléatoires, tous insérés dans des balises HTML <code class=\"docutils literal notranslate\">&lt;p&gt;</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">{% lorem 2 w random %}</code> produit deux mots latins aléatoires.</p></li>\n</ul>\n</section>\n<section id=\"now\">\n<span id=\"std-templatetag-now\"></span><h3><code class=\"docutils literal notranslate\">now</code><a class=\"heading-anchor\" href=\"#now\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche l’heure ou la date actuelle, en utilisant un format correspondant à la chaîne donnée. Cette chaîne peut contenir des spécificateurs de format comme décrit dans la section du filtre <a class=\"reference internal\" href=\"#std-templatefilter-date\"><code class=\"xref std std-tfilter docutils literal notranslate\">date</code></a>.</p>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>It is <span class=\"cp\">{%</span> <span class=\"k\">now</span> <span class=\"s2\">&quot;jS F Y H:i&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Notez que vous pouvez échapper par barre oblique inverse une chaîne de format si vous souhaitez utiliser la valeur « brute ». Dans cet exemple, « f » et « o » sont tous deux échappés par barre oblique inverse, sinon ils seraient chacun interprétés comme une chaîne de format pour afficher respectivement l’année et l’heure :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>It is the <span class=\"cp\">{%</span> <span class=\"k\">now</span> <span class=\"s2\">&quot;jS \\o\\f F&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Le résultat affiché est « It is the 4th of September ».</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Le format indiqué peut aussi correspondre à l’un des formats prédéfinis <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DATE_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">DATE_FORMAT</code></a>, <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DATETIME_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">DATETIME_FORMAT</code></a>, <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-SHORT_DATE_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">SHORT_DATE_FORMAT</code></a> ou <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-SHORT_DATETIME_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">SHORT_DATETIME_FORMAT</code></a>. Les formats prédéfinis peuvent varier en fonction de la langue active et de l’activation de la <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/formatting/\"><span class=\"doc\">Régionalisation des formats</span></a>, par ex. :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>It is <span class=\"cp\">{%</span> <span class=\"k\">now</span> <span class=\"s2\">&quot;SHORT_DATETIME_FORMAT&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</aside>\n<p>Vous pouvez également utiliser la syntaxe <code class=\"docutils literal notranslate\">{% now &quot;Y&quot; as current_year %}</code> pour stocker le résultat dans une variable (une chaîne de caractères). Cela peut être utile lorsqu’on veut utiliser <code class=\"docutils literal notranslate\">{% now %}</code> dans une balise de gabarit telle que <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/translation/#std-templatetag-blocktranslate\"><code class=\"xref std std-ttag docutils literal notranslate\">blocktranslate</code></a> par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">now</span> <span class=\"s2\">&quot;Y&quot;</span> <span class=\"k\">as</span> <span class=\"nv\">current_year</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">blocktranslate</span> <span class=\"cp\">%}</span>Copyright <span class=\"cp\">{{</span> <span class=\"nv\">current_year</span> <span class=\"cp\">}}{%</span> <span class=\"k\">endblocktranslate</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"regroup\">\n<span id=\"std-templatetag-regroup\"></span><h3><code class=\"docutils literal notranslate\">regroup</code><a class=\"heading-anchor\" href=\"#regroup\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Regroupe une liste d’objets semblables par un attribut commun.</p>\n<p>La meilleure façon d’illustrer cette balise complexe est de donner un exemple : disons que <code class=\"docutils literal notranslate\">cities</code> contient une liste de villes représentées par des dictionnaires contenant les clés <code class=\"docutils literal notranslate\">&quot;name&quot;</code>, <code class=\"docutils literal notranslate\">&quot;population&quot;</code> et <code class=\"docutils literal notranslate\">&quot;country&quot;</code>:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code>cities <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Mumbai&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;19,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;India&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Calcutta&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;15,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;India&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;New York&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;20,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;USA&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Chicago&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;7,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;USA&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Tokyo&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;33,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Japan&#39;</span><span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>…et vous aimeriez afficher une liste hiérarchique triée par pays, comme ceci :</p>\n<ul class=\"simple\">\n<li><p>India</p>\n<ul>\n<li><p>Mumbai: 19,000,000</p></li>\n<li><p>Calcutta: 15,000,000</p></li>\n</ul>\n</li>\n<li><p>USA</p>\n<ul>\n<li><p>New York: 20,000,000</p></li>\n<li><p>Chicago: 7,000,000</p></li>\n</ul>\n</li>\n<li><p>Japan</p>\n<ul>\n<li><p>Tokyo: 33,000,000</p></li>\n</ul>\n</li>\n</ul>\n<p>Vous pouvez utiliser la balise <code class=\"docutils literal notranslate\">{% regroup %}</code> pour grouper la liste des villes par pays. L’extrait de code de gabarit suivant effectue cela :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">regroup</span> <span class=\"nv\">cities</span> <span class=\"nv\">by</span> <span class=\"nv\">country</span> <span class=\"k\">as</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n\n<span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">country</span> <span class=\"k\">in</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">country.grouper</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">city</span> <span class=\"k\">in</span> <span class=\"nv\">country.list</span> <span class=\"cp\">%}</span>\n          <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">city.name</span> <span class=\"cp\">}}</span>: <span class=\"cp\">{{</span> <span class=\"nv\">city.population</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Parcourons cet exemple. <code class=\"docutils literal notranslate\">{% regroup %}</code> accepte trois paramètres : la liste que vous souhaitez regrouper, l’attribut sur lequel grouper et le nom de la liste résultante. Dans ce cas, nous regroupons la liste <code class=\"docutils literal notranslate\">cities</code> par l’attribut <code class=\"docutils literal notranslate\">country</code> et nommons le résultat <code class=\"docutils literal notranslate\">country_list</code>.</p>\n<p><code class=\"docutils literal notranslate\">{% regroup %}</code> produit une liste (dans ce cas, <code class=\"docutils literal notranslate\">country_list</code>) d”<strong>objets groupes</strong>. Les objets groupes sont des instances de <a class=\"reference external\" href=\"https://docs.python.org/3/library/collections.html#collections.namedtuple\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">namedtuple()</code></a> contenant deux champs :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">grouper</code>, l’élément qui a servi au groupement (par ex. la chaîne « India » ou « Japan »).</p></li>\n<li><p><code class=\"docutils literal notranslate\">list</code>, une liste de tous les éléments du groupe (par ex. une liste de toutes les villes ayant <code class=\"docutils literal notranslate\">country='India'</code>).</p></li>\n</ul>\n<p>Comme <code class=\"docutils literal notranslate\">{% regroup %}</code> produit des objets <a class=\"reference external\" href=\"https://docs.python.org/3/library/collections.html#collections.namedtuple\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">namedtuple()</code></a>, il est également possible d’écrire l’exemple précédent comme ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">regroup</span> <span class=\"nv\">cities</span> <span class=\"nv\">by</span> <span class=\"nv\">country</span> <span class=\"k\">as</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n\n<span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">country</span><span class=\"o\">,</span> <span class=\"nv\">local_cities</span> <span class=\"k\">in</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">country</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">city</span> <span class=\"k\">in</span> <span class=\"nv\">local_cities</span> <span class=\"cp\">%}</span>\n          <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">city.name</span> <span class=\"cp\">}}</span>: <span class=\"cp\">{{</span> <span class=\"nv\">city.population</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Notez que <code class=\"docutils literal notranslate\">{% regroup %}</code> ne trie pas ce qu’il reçoit ! Notre exemple compte sur le fait que la liste <code class=\"docutils literal notranslate\">cities</code> est préalablement triée par <code class=\"docutils literal notranslate\">country</code>. Si la liste <code class=\"docutils literal notranslate\">cities</code> n’était <em>pas</em> triée par pays, le regroupement aurait naïvement affiché plus d’un groupe par pays. Par exemple, si la liste <code class=\"docutils literal notranslate\">cities</code> contenait ceci (notez que les pays ne sont pas regroupés) :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code>cities <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Mumbai&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;19,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;India&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;New York&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;20,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;USA&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Calcutta&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;15,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;India&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Chicago&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;7,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;USA&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Tokyo&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;population&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;33,000,000&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;country&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Japan&#39;</span><span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Avec ce contenu dans <code class=\"docutils literal notranslate\">cities</code>, l’exemple de code de gabarit pour <code class=\"docutils literal notranslate\">{% regroup %}</code> ci-dessus produirait le résultat suivant :</p>\n<ul class=\"simple\">\n<li><p>India</p>\n<ul>\n<li><p>Mumbai: 19,000,000</p></li>\n</ul>\n</li>\n<li><p>USA</p>\n<ul>\n<li><p>New York: 20,000,000</p></li>\n</ul>\n</li>\n<li><p>India</p>\n<ul>\n<li><p>Calcutta: 15,000,000</p></li>\n</ul>\n</li>\n<li><p>USA</p>\n<ul>\n<li><p>Chicago: 7,000,000</p></li>\n</ul>\n</li>\n<li><p>Japan</p>\n<ul>\n<li><p>Tokyo: 33,000,000</p></li>\n</ul>\n</li>\n</ul>\n<p>La solution la plus simple à ce problème est de s’assurer au niveau de la vue que les données sont triées d’après le critère que vous voulez utiliser pour l’affichage.</p>\n<p>Un autre solution est de trier les données dans le gabarit avec le filtre <a class=\"reference internal\" href=\"#std-templatefilter-dictsort\"><code class=\"xref std std-tfilter docutils literal notranslate\">dictsort</code></a>, pour autant que les données soient constituées d’une liste de dictionnaires :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">regroup</span> <span class=\"nv\">cities</span><span class=\"o\">|</span><span class=\"nf\">dictsort</span><span class=\"s2\">:&quot;country&quot;</span> <span class=\"nv\">by</span> <span class=\"nv\">country</span> <span class=\"k\">as</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<section id=\"grouping-on-other-properties\">\n<h4>Groupement selon d’autres propriétés<a class=\"heading-anchor\" href=\"#grouping-on-other-properties\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Toute consultation d’attribut acceptée dans les gabarits est utilisable comme attribut de groupement pour la balise <code class=\"docutils literal notranslate\">regroup</code>, y compris les méthodes, les attributs, les clés de dictionnaire et les éléments de liste. Par exemple, si le champ « country » est une clé étrangère vers une classe possédant un attribut « description », vous pourriez écrire :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">regroup</span> <span class=\"nv\">cities</span> <span class=\"nv\">by</span> <span class=\"nv\">country.description</span> <span class=\"k\">as</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Ou si <code class=\"docutils literal notranslate\">country</code> est un champ contenant des choix (<code class=\"docutils literal notranslate\">choices</code>), il disposera d’une méthode <a class=\"reference internal\" href=\"/fr/4.0/ref/models/instances/#django.db.models.Model.get_FOO_display\" title=\"django.db.models.Model.get_FOO_display\"><code class=\"xref py py-meth docutils literal notranslate\">get_FOO_display()</code></a> disponible comme attribut vous permettant de regrouper sur la chaîne visible plutôt que sur la clé du choix :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">regroup</span> <span class=\"nv\">cities</span> <span class=\"nv\">by</span> <span class=\"nv\">get_country_display</span> <span class=\"k\">as</span> <span class=\"nv\">country_list</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">{{ country.grouper }}</code> contient maintenant la partie valeur des choix <code class=\"docutils literal notranslate\">choices</code> plutôt que leur clé.</p>\n</section>\n</section>\n<section id=\"resetcycle\">\n<span id=\"std-templatetag-resetcycle\"></span><h3><code class=\"docutils literal notranslate\">resetcycle</code><a class=\"heading-anchor\" href=\"#resetcycle\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Réinitialise un <a class=\"reference internal\" href=\"#cycle\">cycle</a> précédent afin qu’il recommence depuis son premier élément à la prochaine occurrence. Sans paramètre, <code class=\"docutils literal notranslate\">{% resetcycle %}</code> réinitialise le dernier <code class=\"docutils literal notranslate\">{% cycle %}</code> défini dans le gabarit.</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">coach</span> <span class=\"k\">in</span> <span class=\"nv\">coach_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">coach.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">athlete</span> <span class=\"k\">in</span> <span class=\"nv\">coach.athlete_set.all</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;odd&#39;</span> <span class=\"s1\">&#39;even&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">athlete.name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">resetcycle</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Cet exemple produit le code HTML suivant :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>José Mourinho<span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;odd&quot;</span><span class=\"p\">&gt;</span>Thibaut Courtois<span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;even&quot;</span><span class=\"p\">&gt;</span>John Terry<span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;odd&quot;</span><span class=\"p\">&gt;</span>Eden Hazard<span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n\n<span class=\"p\">&lt;</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>Carlo Ancelotti<span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;odd&quot;</span><span class=\"p\">&gt;</span>Manuel Neuer<span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;even&quot;</span><span class=\"p\">&gt;</span>Thomas Müller<span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Remarquez comme le premier bloc se termine avec <code class=\"docutils literal notranslate\">class=&quot;odd&quot;</code> et le nouveau qui commence avec <code class=\"docutils literal notranslate\">class=&quot;odd&quot;</code>. Sans la balise <code class=\"docutils literal notranslate\">{% resetcycle %}</code>, le second bloc aurait commencé avec <code class=\"docutils literal notranslate\">class=&quot;even&quot;</code>.</p>\n<p>Il est aussi possible de réinitialiser les balises <code class=\"docutils literal notranslate\">cycle</code> nommées :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">item</span> <span class=\"k\">in</span> <span class=\"nv\">list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;odd&#39;</span> <span class=\"s1\">&#39;even&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">stripe</span> <span class=\"cp\">%}</span><span class=\"s\"> </span><span class=\"cp\">{%</span> <span class=\"k\">cycle</span> <span class=\"s1\">&#39;major&#39;</span> <span class=\"s1\">&#39;minor&#39;</span> <span class=\"s1\">&#39;minor&#39;</span> <span class=\"s1\">&#39;minor&#39;</span> <span class=\"s1\">&#39;minor&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">tick</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{{</span> <span class=\"nv\">item.data</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">ifchanged</span> <span class=\"nv\">item.category</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">item.category</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n        <span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"k\">not</span> <span class=\"nb\">forloop</span><span class=\"nv\">.first</span> <span class=\"cp\">%}{%</span> <span class=\"k\">resetcycle</span> <span class=\"nv\">tick</span> <span class=\"cp\">%}{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endifchanged</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Dans cet exemple, nous avons à la fois les lignes alternées pair/impair et une ligne « principale » toutes les cinq lignes. Seul le cycle des cinq lignes est réinitialisé lorsqu’une catégorie change.</p>\n</section>\n<section id=\"spaceless\">\n<span id=\"std-templatetag-spaceless\"></span><h3><code class=\"docutils literal notranslate\">spaceless</code><a class=\"heading-anchor\" href=\"#spaceless\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Supprime les espaces entre les balises HTML. Les caractères de tabulation et les sauts de ligne sont aussi considérés comme des espaces.</p>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">spaceless</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;foo/&quot;</span><span class=\"p\">&gt;</span>Foo<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endspaceless</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Cet exemple produit le code HTML suivant :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;foo/&quot;</span><span class=\"p\">&gt;</span>Foo<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Seuls les espaces entre les <em>balises</em> elles-mêmes sont supprimés, pas ceux entre les balises et le texte. Dans cet exemple, les espaces autour de <code class=\"docutils literal notranslate\">Hello</code> ne seront pas enlevés :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">spaceless</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">strong</span><span class=\"p\">&gt;</span>\n        Hello\n    <span class=\"p\">&lt;/</span><span class=\"nt\">strong</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endspaceless</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"templatetag\">\n<span id=\"std-templatetag-templatetag\"></span><h3><code class=\"docutils literal notranslate\">templatetag</code><a class=\"heading-anchor\" href=\"#templatetag\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche l’une des séquences de caractères utilisées dans la syntaxe des balises de gabarit.</p>\n<p>Le système des gabarits n’a aucun concept d’échappement de caractères individuels. Vous pouvez cependant utiliser la balise <code class=\"docutils literal notranslate\">{% templatetag %}</code> pour afficher l’une des combinaisons de caractères des balises de gabarit.</p>\n<p>Le paramètre indique quelle séquence de gabarit vous voulez afficher :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Paramètre</p></th>\n<th class=\"head\"><p>Affiche</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">openblock</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{%</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">closeblock</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">%}</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">openvariable</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">closevariable</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">}}</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">openbrace</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">closebrace</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">}</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">opencomment</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{#</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">closecomment</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">#}</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>The <span class=\"cp\">{%</span> <span class=\"k\">templatetag</span> <span class=\"nv\">openblock</span> <span class=\"cp\">%}</span> characters open a block.\n</code></pre></div>\n<p>Voir aussi la balise <a class=\"reference internal\" href=\"#std-templatetag-verbatim\"><code class=\"xref std std-ttag docutils literal notranslate\">verbatim</code></a> pour une autre façon d’inclure ces caractères.</p>\n</section>\n<section id=\"url\">\n<span id=\"std-templatetag-url\"></span><h3><code class=\"docutils literal notranslate\">url</code><a class=\"heading-anchor\" href=\"#url\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie un référence de chemin absolu (une URL sans le nom de domaine) correspondant à une vue et des paramètres facultatifs. Tout caractère spécial dans le chemin résultant sera codé avec  <a class=\"reference internal\" href=\"/fr/4.0/ref/utils/#django.utils.encoding.iri_to_uri\" title=\"django.utils.encoding.iri_to_uri\"><code class=\"xref py py-func docutils literal notranslate\">iri_to_uri()</code></a>.</p>\n<p>C’est une manière d’afficher des liens sans trahir le principe DRY (« ne pas se répéter »), évitant de devoir figer les URL dans les gabarits :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;some-url-name&#39;</span> <span class=\"nv\">v1</span> <span class=\"nv\">v2</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Le premier paramètre est un <a class=\"reference internal\" href=\"/fr/4.0/topics/http/urls/#naming-url-patterns\"><span class=\"std std-ref\">nom de motif d’URL</span></a>. Cela peut être une chaîne littérale entre guillemets ou une variable de contexte. Des paramètres supplémentaires sont facultatifs et sont fournis sous forme de valeurs séparées par des espaces qui seront utilisées comme paramètres de l’URL. L’exemple ci-dessus montre comment passer des paramètres positionnels. Il est aussi possible d’utiliser la syntaxe par mot-clé</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;some-url-name&#39;</span> <span class=\"nv\">arg1</span><span class=\"o\">=</span><span class=\"nv\">v1</span> <span class=\"nv\">arg2</span><span class=\"o\">=</span><span class=\"nv\">v2</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Ne mélangez pas la syntaxe positionnelle avec la syntaxe par mot-clé dans le même appel. Tous les paramètres requis par la configuration d’URL doivent être présents.</p>\n<p>Par exemple, supposons que vous avez une vue, <code class=\"docutils literal notranslate\">app_views.client</code>, dont la configuration d’URL accepte un identifiant de client (ici, <code class=\"docutils literal notranslate\">client()</code> est une méthode dans le fichier de vues <code class=\"docutils literal notranslate\">app_views.py</code>). La ligne de configuration d’URL pourrait ressembler à ceci :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code>path<span class=\"p\">(</span><span class=\"s1\">&#39;client/&lt;int:id&gt;/&#39;</span><span class=\"p\">,</span> app_views<span class=\"o\">.</span>client<span class=\"p\">,</span> name<span class=\"o\">=</span><span class=\"s1\">&#39;app-views-client&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Si la configuration d’URL de cette application est incluse dans la configuration d’URL du projet par un chemin tel que celui-ci :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code>path<span class=\"p\">(</span><span class=\"s1\">&#39;clients/&#39;</span><span class=\"p\">,</span> include<span class=\"p\">(</span><span class=\"s1\">&#39;project_name.app_name.urls&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>…vous pouvez alors dans le gabarit créer un lien vers cette vue comme ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;app-views-client&#39;</span> <span class=\"nv\">client.id</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La balise de gabarit affichera le texte <code class=\"docutils literal notranslate\">/clients/client/123/</code>.</p>\n<p>Notez que si l’URL que vous résolvez n’existe pas, vous obtiendrez une exception <a class=\"reference internal\" href=\"/fr/4.0/ref/exceptions/#django.urls.NoReverseMatch\" title=\"django.urls.NoReverseMatch\"><code class=\"xref py py-exc docutils literal notranslate\">NoReverseMatch</code></a>, ce qui provoquera l’affichage d’une page d’erreur sur votre site.</p>\n<p>Si vous aimeriez récupérer une URL sans l’afficher, vous pouvez effectuer un appel un peu différent :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;some-url-name&#39;</span> <span class=\"nv\">arg</span> <span class=\"nv\">arg2</span> <span class=\"k\">as</span> <span class=\"nv\">the_url</span> <span class=\"cp\">%}</span>\n\n<span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">the_url</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>I&#39;m linking to <span class=\"cp\">{{</span> <span class=\"nv\">the_url</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>La portée de la variable créée par la syntaxe <code class=\"docutils literal notranslate\">as var</code> est le <code class=\"docutils literal notranslate\">{% block %}</code> dans lequel la balise <code class=\"docutils literal notranslate\">{% url %}</code> apparaît.</p>\n<p>Cette syntaxe <code class=\"docutils literal notranslate\">{% url ... as var %}</code> ne produira <em>pas</em> d’erreur si la vue est manquante. En pratique, vous allez utiliser cela pour des liens vers des vues qui sont facultatives :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;some-url-name&#39;</span> <span class=\"k\">as</span> <span class=\"nv\">the_url</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">the_url</span> <span class=\"cp\">%}</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">the_url</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>Link to optional stuff<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Si vous souhaitez récupérer une URL avec espace de noms, indiquez le nom entièrement qualifié :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;myapp:view-name&#39;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La <a class=\"reference internal\" href=\"/fr/4.0/topics/http/urls/#topics-http-reversing-url-namespaces\"><span class=\"std std-ref\">stratégie habituelle de résolution d’URL avec espace de noms</span></a> sera respectée, y compris l’usage d’indicateurs fournis par le contexte comme l’application actuelle.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>N’oubliez pas d’entourer le motif d’URL <code class=\"docutils literal notranslate\">name</code> par des guillemets, sinon la valeur sera interprétée comme une variable de contexte !</p>\n</aside>\n</section>\n<section id=\"verbatim\">\n<span id=\"std-templatetag-verbatim\"></span><h3><code class=\"docutils literal notranslate\">verbatim</code><a class=\"heading-anchor\" href=\"#verbatim\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Empêche le moteur de gabarits d’effectuer le rendu du contenu de cette balise de bloc.</p>\n<p>C’est souvent employé pour permettre une couche de gabarit JavaScript qui entre en conflit avec la syntaxe Django. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">verbatim</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span><span class=\"k\">if</span> <span class=\"nv\">dying</span><span class=\"cp\">}}</span>Still alive.<span class=\"cp\">{{</span><span class=\"o\">/</span><span class=\"k\">if</span><span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endverbatim</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Vous pouvez aussi désigner une balise de fermeture spécifique, permettant l’utilisation de <code class=\"docutils literal notranslate\">{% endverbatim %}</code> comme faisant partie du contenu non rendu :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">verbatim</span> <span class=\"nv\">myblock</span> <span class=\"cp\">%}</span>\n    Avoid template rendering via the <span class=\"cp\">{%</span> <span class=\"k\">verbatim</span> <span class=\"cp\">%}{%</span> <span class=\"k\">endverbatim</span> <span class=\"cp\">%}</span> block.\n<span class=\"cp\">{%</span> <span class=\"k\">endverbatim</span> <span class=\"nv\">myblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"widthratio\">\n<span id=\"std-templatetag-widthratio\"></span><h3><code class=\"docutils literal notranslate\">widthratio</code><a class=\"heading-anchor\" href=\"#widthratio\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pour la création de graphiques en barres et autres usages similaires, cette balise calcule le rapport entre une valeur donnée et une valeur maximum, puis applique ce rapport à une constante.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;bar.png&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;Bar&quot;</span>\n     <span class=\"na\">height</span><span class=\"o\">=</span><span class=\"s\">&quot;10&quot;</span> <span class=\"na\">width</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">widthratio</span> <span class=\"nv\">this_value</span> <span class=\"nv\">max_value</span> <span class=\"nv\">max_width</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">this_value</code> vaut 175, <code class=\"docutils literal notranslate\">max_value</code> 200 et <code class=\"docutils literal notranslate\">max_width</code> 100, la largeur de l’image de l’exemple ci-dessus sera de 88 pixels (parce que 175/200 = 0,875 ; 0,875 * 100 = 87,5 qui est arrondi à 88).</p>\n<p>Dans certains cas, il peut être souhaitable de capturer le résultat de <code class=\"docutils literal notranslate\">widthratio</code> dans une variable. Cela peut par exemple être utile dans une balise <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/translation/#std-templatetag-blocktranslate\"><code class=\"xref std std-ttag docutils literal notranslate\">blocktranslate</code></a>, comme ceci :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">widthratio</span> <span class=\"nv\">this_value</span> <span class=\"nv\">max_value</span> <span class=\"nv\">max_width</span> <span class=\"k\">as</span> <span class=\"nv\">width</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">blocktranslate</span> <span class=\"cp\">%}</span>The width is: <span class=\"cp\">{{</span> <span class=\"nv\">width</span> <span class=\"cp\">}}{%</span> <span class=\"k\">endblocktranslate</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"with\">\n<span id=\"std-templatetag-with\"></span><h3><code class=\"docutils literal notranslate\">with</code><a class=\"heading-anchor\" href=\"#with\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Place le résultat d’une expression complexe sous un nom plus simple. C’est utile lors de l’accès multiple à une méthode coûteuse (par ex. avec accès à la base de données).</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">with</span> <span class=\"nv\">total</span><span class=\"o\">=</span><span class=\"nv\">business.employees.count</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">total</span> <span class=\"cp\">}}</span> employee<span class=\"cp\">{{</span> <span class=\"nv\">total</span><span class=\"o\">|</span><span class=\"nf\">pluralize</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endwith</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>La variable créée (dans l’exemple ci-dessus, <code class=\"docutils literal notranslate\">total</code>) est uniquement disponible entre les balises <code class=\"docutils literal notranslate\">{% with %}</code> et <code class=\"docutils literal notranslate\">{% endwith %}</code>.</p>\n<p>Vous pouvez créer plus d’une variable de contexte :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">with</span> <span class=\"nv\">alpha</span><span class=\"o\">=</span><span class=\"m\">1</span> <span class=\"nv\">beta</span><span class=\"o\">=</span><span class=\"m\">2</span> <span class=\"cp\">%}</span>\n    ...\n<span class=\"cp\">{%</span> <span class=\"k\">endwith</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>L’ancien format plus verbeux est toujours pris en charge : <code class=\"docutils literal notranslate\">{% with business.employees.count as total %}</code></p>\n</aside>\n</section>\n</section>\n<section id=\"built-in-filter-reference\">\n<span id=\"ref-templates-builtins-filters\"></span><h2>Référence des filtres intégrés<a class=\"heading-anchor\" href=\"#built-in-filter-reference\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"add\">\n<span id=\"std-templatefilter-add\"></span><h3><code class=\"docutils literal notranslate\">add</code><a class=\"heading-anchor\" href=\"#add\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ajoute le paramètre à la valeur.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">add</span><span class=\"s2\">:&quot;2&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">4</code>, le résultat sera <code class=\"docutils literal notranslate\">6</code>.</p>\n<p>Ce filtre essaie d’abord de forcer les deux valeurs à des nombres entiers. Si cela échoue, il essaie tout de même d’additionner les deux valeurs. Cela fonctionne avec certains types de données (chaînes, listes, etc.) et échoue avec d’autres. Si cette deuxième tentative échoue, le résultat sera une chaîne vide.</p>\n<p>Par exemple, si nous avons :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">first</span><span class=\"o\">|</span><span class=\"nf\">add</span><span class=\"o\">:</span><span class=\"nv\">second</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>et que <code class=\"docutils literal notranslate\">first</code> vaut <code class=\"docutils literal notranslate\">[1, 2, 3]</code> et <code class=\"docutils literal notranslate\">second</code> vaut <code class=\"docutils literal notranslate\">[4, 5, 6]</code>, le résultat sera <code class=\"docutils literal notranslate\">[1, 2, 3, 4, 5, 6]</code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Les chaînes pouvant être forcées en nombre entier seront <strong>additionnées</strong> et non pas concaténées, comme dans le premier exemple ci-dessus.</p>\n</aside>\n</section>\n<section id=\"addslashes\">\n<span id=\"std-templatefilter-addslashes\"></span><h3><code class=\"docutils literal notranslate\">addslashes</code><a class=\"heading-anchor\" href=\"#addslashes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ajoute des barres obliques inverses avant les guillemets. Utile pour échapper des chaînes en CSV, par exemple.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;J'utilise Django&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;J\\'utilise Django&quot;</code>.</p>\n</section>\n<section id=\"capfirst\">\n<span id=\"std-templatefilter-capfirst\"></span><h3><code class=\"docutils literal notranslate\">capfirst</code><a class=\"heading-anchor\" href=\"#capfirst\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en majuscule le premier caractère de la valeur. Si le premier caractère n’est pas une lettre, ce filtre n’a aucun effet.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">capfirst</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;django&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Django&quot;</code>.</p>\n</section>\n<section id=\"center\">\n<span id=\"std-templatefilter-center\"></span><h3><code class=\"docutils literal notranslate\">center</code><a class=\"heading-anchor\" href=\"#center\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Centre la valeur dans un champ de largeur donnée.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>&quot;<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">center</span><span class=\"s2\">:&quot;15&quot;</span> <span class=\"cp\">}}</span>&quot;\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Django&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;&#160;&#160;&#160;&#160; Django&#160;&#160;&#160; &quot;</code>.</p>\n</section>\n<section id=\"cut\">\n<span id=\"std-templatefilter-cut\"></span><h3><code class=\"docutils literal notranslate\">cut</code><a class=\"heading-anchor\" href=\"#cut\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Enlève toutes les valeurs en paramètre de la chaîne à filtrer.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">cut</span><span class=\"s2\">:&quot; &quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Chaîne avec des espaces&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Chaîneavecdesespaces&quot;</code>.</p>\n</section>\n<section id=\"date\">\n<span id=\"std-templatefilter-date\"></span><h3><code class=\"docutils literal notranslate\">date</code><a class=\"heading-anchor\" href=\"#date\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en forme une date selon le format indiqué.</p>\n<p>Utilise un format semblable à la fonction <a class=\"reference internal\" href=\"#id6\">date()</a> de PHP avec certaines différences.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Ces caractères de format ne sont pas utilisés dans Django en dehors des gabarits. Ils ont été conçus pour être compatibles avec PHP afin de faciliter la transition aux rédacteurs habitués à ce langage.</p>\n</aside>\n<p id=\"date-and-time-formatting-specifiers\">Chaînes de format disponibles :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Caractère de format</p></th>\n<th class=\"head\"><p>Description</p></th>\n<th class=\"head\"><p>Exemple d’affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><strong>Jour</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">d</code></p></td>\n<td><p>Jour du mois, 2 chiffres complétés si nécessaire par un zéro.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'01'</code> à <code class=\"docutils literal notranslate\">'31'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">j</code></p></td>\n<td><p>Jour du mois sans zéros initiaux.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1'</code> à <code class=\"docutils literal notranslate\">'31'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">D</code></p></td>\n<td><p>Jour de la semaine, abréviation de 3 caractères.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'ven'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">l</code></p></td>\n<td><p>Jour de la semaine, texte complet.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'vendredi'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">S</code></p></td>\n<td><p>Suffixe ordinal anglais pour le jour du mois, sur 2 caractères.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'st'</code>, <code class=\"docutils literal notranslate\">'nd'</code>, <code class=\"docutils literal notranslate\">'rd'</code> ou <code class=\"docutils literal notranslate\">'th'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">w</code></p></td>\n<td><p>Jour de la semaine, chiffre sans zéro initial.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'0'</code> (dimanche) à <code class=\"docutils literal notranslate\">'6'</code> (samedi)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">z</code></p></td>\n<td><p>Jour de l’année.</p></td>\n<td><p><code class=\"docutils literal notranslate\">1</code> à <code class=\"docutils literal notranslate\">366</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><strong>Semaine</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">W</code></p></td>\n<td><p>Numéro de semaine dans l’année selon ISO-8601, les semaines commençant le lundi.</p></td>\n<td><p><code class=\"docutils literal notranslate\">1</code>, <code class=\"docutils literal notranslate\">53</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><strong>Mois</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">m</code></p></td>\n<td><p>Mois, 2 chiffres, avec zéro initial si nécessaire.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'01'</code> à <code class=\"docutils literal notranslate\">'12'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">n</code></p></td>\n<td><p>Mois (chiffres) sans zéro initial.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1'</code> à <code class=\"docutils literal notranslate\">'12'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">M</code></p></td>\n<td><p>Mois, abréviation de 3 caractères.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'jan'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">b</code></p></td>\n<td><p>Mois, abréviation de 3 caractères en minuscules.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'jan'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">E</code></p></td>\n<td><p>Mois, représentation alternative spécifique à la langue active, habituellement utilisée pour les dates au format étendu.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'listopada'</code> (pour le polonais, contrairement à <code class=\"docutils literal notranslate\">'Listopad'</code>)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">F</code></p></td>\n<td><p>Mois au format texte long.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'janvier'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">N</code></p></td>\n<td><p>Abréviation du mois dans le style Associated Press. Extension propriétaire.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'jan.'</code>, <code class=\"docutils literal notranslate\">'fév.'</code>, <code class=\"docutils literal notranslate\">'mars'</code>, <code class=\"docutils literal notranslate\">'mai'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">t</code></p></td>\n<td><p>Nombre de jours du mois indiqué.</p></td>\n<td><p><code class=\"docutils literal notranslate\">28</code> à <code class=\"docutils literal notranslate\">31</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><strong>Année</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">y</code></p></td>\n<td><p>Année, 2 chiffres avec zéros initiaux.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'00'</code> à <code class=\"docutils literal notranslate\">'99'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">Y</code></p></td>\n<td><p>Année, 4 chiffres avec zéros initiaux.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'0001'</code>, …, <code class=\"docutils literal notranslate\">'1999'</code>, …, <code class=\"docutils literal notranslate\">'9999'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">L</code></p></td>\n<td><p>Valeur booléenne indiquant s’il s’agit d’une année bissextile.</p></td>\n<td><p><code class=\"docutils literal notranslate\">True</code> ou <code class=\"docutils literal notranslate\">False</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">o</code></p></td>\n<td><p>Année selon numération des semaines ISO-8601 (W) utilisant la semaine intercalaire. Voir Y pour le format d’année plus habituel.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1999'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><strong>Heure</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">g</code></p></td>\n<td><p>Heure, format sur 12 heures sans zéros initiaux.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1'</code> à <code class=\"docutils literal notranslate\">'12'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">G</code></p></td>\n<td><p>Heure, format sur 24 heures sans zéros initiaux.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'0'</code> à <code class=\"docutils literal notranslate\">'23'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">h</code></p></td>\n<td><p>Heure, format sur 12 heures.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'01'</code> à <code class=\"docutils literal notranslate\">'12'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">H</code></p></td>\n<td><p>Heure, format sur 24 heures.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'00'</code> à <code class=\"docutils literal notranslate\">'23'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">i</code></p></td>\n<td><p>Minutes.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'00'</code> à <code class=\"docutils literal notranslate\">'59'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">s</code></p></td>\n<td><p>Secondes, 2 chiffres avec zéro initial.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'00'</code> à <code class=\"docutils literal notranslate\">'59'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">u</code></p></td>\n<td><p>Microsecondes.</p></td>\n<td><p><code class=\"docutils literal notranslate\">000000</code> à <code class=\"docutils literal notranslate\">999999</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">a</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">'a.m.'</code> ou <code class=\"docutils literal notranslate\">'p.m.'</code> (notez que c’est légèrement différent de l’affichage PHP, par la présence de points correspondant au style Associated Press).</p></td>\n<td><p><code class=\"docutils literal notranslate\">'a.m.'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">A</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">'AM'</code> ou <code class=\"docutils literal notranslate\">'PM'</code>.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'AM'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">f</code></p></td>\n<td><p>Heure, en format heures et minutes sur 12 heures, sans affichage des minutes si elles valent 0. Extension propriétaire.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1'</code>, <code class=\"docutils literal notranslate\">'1:30'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">P</code></p></td>\n<td><p>Heure, au format sur 12 heures, minutes et « a.m. »/« p.m. », sans les minutes si elles valent 0 ; le cas échéant, les chaînes « minuit » et « midi » apparaissent. Extension propriétaire.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1 a.m.'</code>, <code class=\"docutils literal notranslate\">'1:30 p.m.'</code>, <code class=\"docutils literal notranslate\">'minuit'</code>, <code class=\"docutils literal notranslate\">'midi'</code>, <code class=\"docutils literal notranslate\">'12:30 p.m.'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><strong>Fuseau horaire</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">e</code></p></td>\n<td><p>Nom de fuseau horaire. Différents formats peuvent apparaître, ou même une chaîne vide, en fonction de la date/heure.</p></td>\n<td><p><code class=\"docutils literal notranslate\">''</code>, <code class=\"docutils literal notranslate\">'GMT'</code>, <code class=\"docutils literal notranslate\">'-500'</code>, <code class=\"docutils literal notranslate\">'US/Eastern'</code>, etc.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">I</code></p></td>\n<td><p>Heure d’été, indication si elle est active ou non.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'1'</code> ou <code class=\"docutils literal notranslate\">'0'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">O</code></p></td>\n<td><p>Différence en heures avec le temps de Greenwich.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'+0200'</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">T</code></p></td>\n<td><p>Fuseau horaire de la machine.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'EST'</code>, <code class=\"docutils literal notranslate\">'MDT'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">Z</code></p></td>\n<td><p>Décalage de fuseau horaire en secondes. Le décalage pour les fuseaux horaires à l’ouest de UTC est toujours négatif, alors qu’il est positif pour les fuseaux à l’est de UTC.</p></td>\n<td><p><code class=\"docutils literal notranslate\">-43200</code> à <code class=\"docutils literal notranslate\">43200</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><strong>Date/heure</strong></p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">c</code></p></td>\n<td><p>Format ISO 8601 (note : contrairement à d’autres formats comme « Z », « O » ou « r », le format « c » n’ajoute pas le décalage de fuseau horaire si la valeur est une date/heure naïve (voir <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.tzinfo</code></a>).</p></td>\n<td><p><code class=\"docutils literal notranslate\">2008-01-02T10:30:00.000123+02:00</code> ou <code class=\"docutils literal notranslate\">2008-01-02T10:30:00.000123</code> si la date/heure est naïve</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">r</code></p></td>\n<td><p>Date mise en forme selon <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc5322.html#section-3.3\"><strong>RFC 5322</strong></a>.</p></td>\n<td><p><code class=\"docutils literal notranslate\">'ven, 22 Nov 2013 18:41:16 +0100'</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">U</code></p></td>\n<td><p>Secondes depuis le temps Unix initial (1er janvier 1970 00:00:00 UTC).</p></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;D d M Y&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> est un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime</code></a> (par ex. le résultat de <code class=\"docutils literal notranslate\">datetime.datetime.now()</code>), le résultat sera le texte <code class=\"docutils literal notranslate\">'mer 09 jan 2008'</code>.</p>\n<p>Le format indiqué peut correspondre à l’un des formats prédéfinis <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DATE_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">DATE_FORMAT</code></a>, <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DATETIME_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">DATETIME_FORMAT</code></a>, <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-SHORT_DATE_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">SHORT_DATE_FORMAT</code></a> ou <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-SHORT_DATETIME_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">SHORT_DATETIME_FORMAT</code></a>, ou un format personnalisé utilisant les spécificateurs de format décrits dans le tableau ci-dessus. Notez que les formats prédéfinis peuvent varier en fonction de la langue active.</p>\n<p>Dans le cas où <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_L10N</code></a> vaut <code class=\"docutils literal notranslate\">True</code> et que <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\">LANGUAGE_CODE</code></a> est, par exemple, <code class=\"docutils literal notranslate\">&quot;es&quot;</code>, alors pour :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;SHORT_DATE_FORMAT&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>le résultat sera le texte <code class=\"docutils literal notranslate\">&quot;09/01/2008&quot;</code> (le format <code class=\"docutils literal notranslate\">&quot;SHORT_DATE_FORMAT&quot;</code> de la locale <code class=\"docutils literal notranslate\">es</code> fourni avec Django est <code class=\"docutils literal notranslate\">&quot;d/m/Y&quot;</code>).</p>\n<p>Lorsqu’aucune chaîne de format n’est indiquée, c’est le format <code class=\"docutils literal notranslate\">DATE_FORMAT</code> qui est utilisé. Avec des réglages semblables à l’exemple précédent :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">date</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>produit <code class=\"docutils literal notranslate\">9 de Enero de 2008</code> (le format <code class=\"docutils literal notranslate\">DATE_FORMAT</code> de la locale <code class=\"docutils literal notranslate\">es</code> est <code class=\"docutils literal notranslate\">r'j \\d\\e F \\d\\e Y'</code>). « d » et « e » sont tous deux échappés par la barre oblique inverse, car sinon ils seraient considérés comme des marqueurs de format affichant respectivement le jour et le nom du fuseau horaire.</p>\n<p>Vous pouvez combiner <code class=\"docutils literal notranslate\">date</code> avec le filtre <a class=\"reference internal\" href=\"#std-templatefilter-time\"><code class=\"xref std std-tfilter docutils literal notranslate\">time</code></a> afin de produire une représentation complète d’une valeur <code class=\"docutils literal notranslate\">datetime</code>, par ex. :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;D d M Y&quot;</span> <span class=\"cp\">}}</span> <span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span><span class=\"s2\">:&quot;H:i&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n<section id=\"default\">\n<span id=\"std-templatefilter-default\"></span><h3><code class=\"docutils literal notranslate\">default</code><a class=\"heading-anchor\" href=\"#default\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si <code class=\"docutils literal notranslate\">value</code> est évaluée à <code class=\"docutils literal notranslate\">False</code>, le paramètre de <code class=\"docutils literal notranslate\">default</code> est affiché. Sinon, c’est la valeur <code class=\"docutils literal notranslate\">value</code> qui est affichée.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">default</span><span class=\"s2\">:&quot;nothing&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;&quot;</code> (la chaîne vide), le résultat sera <code class=\"docutils literal notranslate\">nothing</code>.</p>\n</section>\n<section id=\"default-if-none\">\n<span id=\"std-templatefilter-default_if_none\"></span><h3><code class=\"docutils literal notranslate\">default_if_none</code><a class=\"heading-anchor\" href=\"#default-if-none\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si (et seulement si) <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">None</code>,  le paramètre de <code class=\"docutils literal notranslate\">default</code> est affiché. Sinon, c’est la valeur <code class=\"docutils literal notranslate\">value</code> qui est affichée.</p>\n<p>Notez que si une chaîne vide est transmise, la valeur par défaut ne sera <em>pas</em> utilisée. Utilisez le filtre <a class=\"reference internal\" href=\"#std-templatefilter-default\"><code class=\"xref std std-tfilter docutils literal notranslate\">default</code></a> si vous voulez que la valeur par défaut soit aussi utilisée pour les chaînes vides.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">default_if_none</span><span class=\"s2\">:&quot;nothing&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">None</code>, le résultat sera <code class=\"docutils literal notranslate\">nothing</code>.</p>\n</section>\n<section id=\"dictsort\">\n<span id=\"std-templatefilter-dictsort\"></span><h3><code class=\"docutils literal notranslate\">dictsort</code><a class=\"heading-anchor\" href=\"#dictsort\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Accepte une liste de dictionnaires et renvoie cette liste triée par la clé donnée en paramètre.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">dictsort</span><span class=\"s2\">:&quot;name&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">[</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;zed&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">19</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;amy&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">22</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;joe&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">31</span><span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>le résultat sera :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">[</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;amy&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">22</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;joe&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">31</span><span class=\"p\">},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;zed&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">19</span><span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Vous pouvez également faire des choses plus compliquées comme :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">book</span> <span class=\"k\">in</span> <span class=\"nv\">books</span><span class=\"o\">|</span><span class=\"nf\">dictsort</span><span class=\"s2\">:&quot;author.age&quot;</span> <span class=\"cp\">%}</span>\n    * <span class=\"cp\">{{</span> <span class=\"nv\">book.title</span> <span class=\"cp\">}}</span> (<span class=\"cp\">{{</span> <span class=\"nv\">book.author.name</span> <span class=\"cp\">}}</span>)\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">books</code> est :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">[</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;title&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;1984&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;author&#39;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;George&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">45</span><span class=\"p\">}},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;title&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Timequake&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;author&#39;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Kurt&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">75</span><span class=\"p\">}},</span>\n    <span class=\"p\">{</span><span class=\"s1\">&#39;title&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Alice&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;author&#39;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Lewis&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">33</span><span class=\"p\">}},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>alors le résultat sera :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>* Alice (Lewis)\n* 1984 (George)\n* Timequake (Kurt)\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">dictsort</code> peut aussi trier une liste de listes (ou tout autre objet implémentant <code class=\"docutils literal notranslate\">__getitem__()</code>) par des éléments à un indice donné. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">dictsort</span><span class=\"o\">:</span><span class=\"m\">0</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">[</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;42&#39;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;c&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;string&#39;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;b&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>le résultat sera :</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"p\">[</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;42&#39;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;b&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s1\">&#39;c&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;string&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Vous devez passer l’indice comme nombre entier et pas comme chaîne. Le code suivant produit un résultat vide :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">values</span><span class=\"o\">|</span><span class=\"nf\">dictsort</span><span class=\"s2\">:&quot;0&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Le tri par éléments à un indice donné n’est pas pris en charge pour les dictionnaires.</p>\n<aside class=\"version-note version-changed\" data-version=\"2.2.26\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 2.2.26</p><p>Dans les anciennes versions, le tri par éléments à un indice donné était pris en charge pour les dictionnaires.</p>\n</aside>\n</section>\n<section id=\"dictsortreversed\">\n<span id=\"std-templatefilter-dictsortreversed\"></span><h3><code class=\"docutils literal notranslate\">dictsortreversed</code><a class=\"heading-anchor\" href=\"#dictsortreversed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Accepte une liste de dictionnaires et renvoie cette liste triée par la clé donnée en paramètre dans l’ordre inverse. Le fonctionnement est le même que le filtre ci-dessus excepté que la valeur renvoyée sera triée dans l’ordre inverse.</p>\n</section>\n<section id=\"divisibleby\">\n<span id=\"std-templatefilter-divisibleby\"></span><h3><code class=\"docutils literal notranslate\">divisibleby</code><a class=\"heading-anchor\" href=\"#divisibleby\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie <code class=\"docutils literal notranslate\">True</code> si la valeur est divisible par le paramètre.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">divisibleby</span><span class=\"s2\">:&quot;3&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">21</code>, le résultat sera</p>\n</section>\n<section id=\"escape\">\n<span id=\"std-templatefilter-escape\"></span><h3><code class=\"docutils literal notranslate\">escape</code><a class=\"heading-anchor\" href=\"#escape\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Échappe du code HTML. Plus particulièrement, il effectue les remplacements suivants :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">&lt;</code> est converti en <code class=\"docutils literal notranslate\">&amp;lt;</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">&gt;</code> est converti en <code class=\"docutils literal notranslate\">&amp;gt;</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">'</code> (apostrophe) est converti en <code class=\"docutils literal notranslate\">&amp;#x27;</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">&quot;</code> (guillemet) est converti en <code class=\"docutils literal notranslate\">&amp;quot;</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">&amp;</code> est converti en <code class=\"docutils literal notranslate\">&amp;amp;</code></p></li>\n</ul>\n<p>L’application de <code class=\"docutils literal notranslate\">escape</code> à une variable qui doit normalement subir l’échappement automatique de son résultat ne fera qu’effectuer un contrôle d’échappement supplémentaire. On peut donc utiliser cette fonction sans souci même dans un contexte d’échappement automatique. Si vous souhaitez forcer l’échappement réel dans tous les cas, utilisez le filtre  <a class=\"reference internal\" href=\"#std-templatefilter-force_escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">force_escape</code></a>.</p>\n<p>Par exemple, vous pouvez appliquer <code class=\"docutils literal notranslate\">escape</code> à certains champs lorsque <a class=\"reference internal\" href=\"#std-templatetag-autoescape\"><code class=\"xref std std-ttag docutils literal notranslate\">autoescape</code></a> n’est pas actif :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">off</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">title</span><span class=\"o\">|</span><span class=\"nf\">escape</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"escapejs\">\n<span id=\"std-templatefilter-escapejs\"></span><h3><code class=\"docutils literal notranslate\">escapejs</code><a class=\"heading-anchor\" href=\"#escapejs\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Échappe des caractères dans du contenu JavaScript. Cela ne rend <em>pas</em> le texte fiable pour être utilisé dans du HTML ou des gabarits de littéraux JavaScript, mais cela protège des erreurs de syntaxe lors de l’utilisation de gabarits pour générer du JavaScript/JSON.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">escapejs</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;testing\\r\\njavascript 'string\\&quot; &lt;b&gt;escaping&lt;/b&gt;&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;testing\\\\u000D\\\\u000Ajavascript \\\\u0027string\\\\u0022 \\\\u003Cb\\\\u003Eescaping\\\\u003C/b\\\\u003E&quot;</code>.</p>\n</section>\n<section id=\"filesizeformat\">\n<span id=\"std-templatefilter-filesizeformat\"></span><h3><code class=\"docutils literal notranslate\">filesizeformat</code><a class=\"heading-anchor\" href=\"#filesizeformat\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en forme la valeur sous forme de taille de fichier humainement lisible (par ex. <code class=\"docutils literal notranslate\">'13 Kio'</code>, <code class=\"docutils literal notranslate\">'4.1 Mio'</code>, <code class=\"docutils literal notranslate\">'102 octets'</code>, etc).</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">filesizeformat</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>SI <code class=\"docutils literal notranslate\">value</code> contient 123456789, le résultat sera <code class=\"docutils literal notranslate\">117.7 Mio</code>.</p>\n<aside class=\"admonition-file-sizes-and-si-units admonition\" role=\"note\">\n<p class=\"admonition-title\">Tailles de fichiers et unités SI</p>\n<p>Strictement parlant, <code class=\"docutils literal notranslate\">filesizeformat</code> ne se conforme pas au Système international d’unités qui recommande l’usage de KiB, MiB, GiB, etc. lorsque la taille d’octet est calculée en puissances de 1024 (ce qui est le cas ici). Django utilise plutôt les noms d’unités traditionnelles (KB, MB, GB, etc.) correspondant aux noms qui sont utilisés plus couramment (NdT : la traduction en français utilise les préfixes SI Kio, Mio, etc.).</p>\n</aside>\n</section>\n<section id=\"first\">\n<span id=\"std-templatefilter-first\"></span><h3><code class=\"docutils literal notranslate\">first</code><a class=\"heading-anchor\" href=\"#first\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie le premier élément de la liste.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">first</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient la liste <code class=\"docutils literal notranslate\">['a', 'b', 'c']</code>, le résultat sera <code class=\"docutils literal notranslate\">'a'</code>.</p>\n</section>\n<section id=\"floatformat\">\n<span id=\"std-templatefilter-floatformat\"></span><h3><code class=\"docutils literal notranslate\">floatformat</code><a class=\"heading-anchor\" href=\"#floatformat\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Quand le paramètre est absent, ce filtre arrondit un nombre à virgule flottante à un chiffre après la virgule, mais seulement s’il y a une partie décimale à afficher. Par exemple :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,2</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34.00000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.26000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,3</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Quand un paramètre nombre entier est transmis, <code class=\"docutils literal notranslate\">floatformat</code> arrondit le nombre au nombre de chiffres après la virgule indiqué par le paramètre. Par exemple :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:3 }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34.00000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:3 }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,000</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.26000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:3 }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,260</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Il peut être particulièrement utile de transmettre le paramètre 0 (zéro) ce qui arrondit le nombre à virgule au nombre entier le plus proche.</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;0&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34.00000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;0&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">39.56000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;0&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">40</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Si le paramètre passé à <code class=\"docutils literal notranslate\">floatformat</code> est négatif, le nombre sera arrondi au nombre de chiffres après la virgule indiqué, mais seulement s’il y a une partie décimale à afficher. Par exemple :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;-3&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34.00000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;-3&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.26000</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ valeur|floatformat:&quot;-3&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,260</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Si l’argument transmis à <code class=\"docutils literal notranslate\">floatformat</code> possède le suffixe <code class=\"docutils literal notranslate\">g</code>, cela forcera le groupement par <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-THOUSAND_SEPARATOR\"><code class=\"xref std std-setting docutils literal notranslate\">THOUSAND_SEPARATOR</code></a> pour la locale active. Par exemple, lorsque la locale active est <code class=\"docutils literal notranslate\">en</code> (anglais) :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34232.34</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ value|floatformat:&quot;2g&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232.34</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34232.06</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ value|floatformat:&quot;g&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232.1</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34232.00</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ value|floatformat:&quot;-3g&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Le résultat est toujours régionalisé (indépendamment de la balise <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/formatting/#std-templatetag-localize\"><code class=\"xref std std-ttag docutils literal notranslate\">{% localize off %}</code></a>) sauf si le paramètre transmis à <code class=\"docutils literal notranslate\">floatformat</code> possède le suffixe <code class=\"docutils literal notranslate\">u</code>, ce qui force la désactivation de la régionalisation. Par exemple, lorsque la langue active est <code class=\"docutils literal notranslate\">pl</code> (polonais) :</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p><code class=\"docutils literal notranslate\">valeur</code></p></th>\n<th class=\"head\"><p>Gabarit</p></th>\n<th class=\"head\"><p>Affichage</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ value|floatformat:&quot;3&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">34.23234</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ value|floatformat:&quot;3u&quot; }}</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">34,232</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>L’utilisation de <code class=\"docutils literal notranslate\">floatformat</code> sans paramètre est équivalent à l’utilisation de <code class=\"docutils literal notranslate\">floatformat</code> avec le paramètre <code class=\"docutils literal notranslate\">-1</code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"3.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 3.2</p><p>Le suffixe <code class=\"docutils literal notranslate\">g</code> pour forcer le groupement avec séparateur de milliers a été ajouté.</p>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"4.0\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 4.0</p><p>Le filtre de gabarit <code class=\"docutils literal notranslate\">floatformat</code> ne dépend plus du réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_L10N</code></a> et renvoie toujours un résultat régionalisé.</p>\n<p>Le suffixe <code class=\"docutils literal notranslate\">u</code> pour forcer la désactivation de la régionalisation a été ajouté.</p>\n</aside>\n</section>\n<section id=\"force-escape\">\n<span id=\"std-templatefilter-force_escape\"></span><h3><code class=\"docutils literal notranslate\">force_escape</code><a class=\"heading-anchor\" href=\"#force-escape\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Applique l’échappement HTML à une chaîne de caractères (voir le filtre <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a> pour les détails). Ce filtre est appliqué <em>immédiatement</em> et renvoie une nouvelle chaîne échappée. Cela peut être utile dans les rares cas où vous avez besoin de plusieurs échappements successifs ou que vous vouliez appliquer d’autres filtres au résultat échappé. En temps normal, l’emploi du filtre <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a> doit suffire.</p>\n<p>Par exemple, si vous souhaitez échapper les balises HTML <code class=\"docutils literal notranslate\">&lt;p&gt;</code> produites par le filtre <a class=\"reference internal\" href=\"#std-templatefilter-linebreaks\"><code class=\"xref std std-tfilter docutils literal notranslate\">linebreaks</code></a>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">off</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">body</span><span class=\"o\">|</span><span class=\"nf\">linebreaks</span><span class=\"o\">|</span><span class=\"nf\">force_escape</span> <span class=\"cp\">}}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"get-digit\">\n<span id=\"std-templatefilter-get_digit\"></span><h3><code class=\"docutils literal notranslate\">get_digit</code><a class=\"heading-anchor\" href=\"#get-digit\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Étant donné un nombre entier, renvoie le chiffre indiqué, où 1 est le chiffre le plus à droite, 2 le deuxième plus à droite, etc. Renvoie la valeur originale si les entrées ne sont pas valables (si la valeur ou le paramètre ne sont pas des nombres entiers ou si le paramètre est plus petit que 1). Sinon, le résultat est toujours un nombre entier.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">get_digit</span><span class=\"s2\">:&quot;2&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>SI <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">123456789</code>, le résultat sera <code class=\"docutils literal notranslate\">8</code>.</p>\n</section>\n<section id=\"iriencode\">\n<span id=\"std-templatefilter-iriencode\"></span><h3><code class=\"docutils literal notranslate\">iriencode</code><a class=\"heading-anchor\" href=\"#iriencode\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit un IRI (Internationalized Resource Identifier) en une chaîne pouvant être incluse dans une URL. C’est nécessaire quand vous essayez d’insérer des chaînes contenant des caractères non ASCII dans des URL.</p>\n<p>Vous pouvez sans problème utiliser ce filtre sur une chaîne ayant déjà passé par le filtre <a class=\"reference internal\" href=\"#std-templatefilter-urlencode\"><code class=\"xref std std-tfilter docutils literal notranslate\">urlencode</code></a>.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">iriencode</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;?test=1&amp;moi=2&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;?test=1&amp;amp;moi=2&quot;</code>.</p>\n</section>\n<section id=\"join\">\n<span id=\"std-templatefilter-join\"></span><h3><code class=\"docutils literal notranslate\">join</code><a class=\"heading-anchor\" href=\"#join\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Concatène les éléments d’une liste avec une chaîne de liaison, comme Python le fait avec <code class=\"docutils literal notranslate\">str.join(list)</code>.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">join</span><span class=\"s2\">:&quot; // &quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient la liste <code class=\"docutils literal notranslate\">['a', 'b', 'c']</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;a // b // c&quot;</code>.</p>\n</section>\n<section id=\"json-script\">\n<span id=\"std-templatefilter-json_script\"></span><h3><code class=\"docutils literal notranslate\">json_script</code><a class=\"heading-anchor\" href=\"#json-script\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Transforme un objet Python en JSON de manière sûre, enveloppé dans une balise <code class=\"docutils literal notranslate\">&lt;script&gt;</code>, pour utilisation à partir de JavaScript.</p>\n<p><strong>Paramètre</strong> : « id » HTML de la balise <code class=\"docutils literal notranslate\">&lt;script&gt;</code>.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">json_script</span><span class=\"s2\">:&quot;hello-data&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient le dictionnaire <code class=\"docutils literal notranslate\">{'hello': 'world'}</code>, le résultat sera :</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">script</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;hello-data&quot;</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;application/json&quot;</span><span class=\"p\">&gt;{</span><span class=\"s2\">&quot;hello&quot;</span><span class=\"o\">:</span> <span class=\"s2\">&quot;world&quot;</span><span class=\"p\">}&lt;/</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>On peut accéder aux données résultantes en JavaScript comme ceci :</p>\n<div class=\"code-block\" data-language=\"javascript\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"JavaScript code\"><code><span class=\"kd\">const</span> <span class=\"nx\">value</span> <span class=\"o\">=</span> <span class=\"nb\">JSON</span><span class=\"p\">.</span><span class=\"nx\">parse</span><span class=\"p\">(</span><span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">getElementById</span><span class=\"p\">(</span><span class=\"s1\">&#39;hello-data&#39;</span><span class=\"p\">).</span><span class=\"nx\">textContent</span><span class=\"p\">);</span>\n</code></pre></div>\n<p>Les attaques XSS sont évitées en échappant les caractères « &lt; », « &gt; » et « &amp; ». Par exemple, si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">{'hello': 'world&lt;/script&gt;&amp;amp;'}</code>, le résultat sera :</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">script</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;hello-data&quot;</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;application/json&quot;</span><span class=\"p\">&gt;{</span><span class=\"s2\">&quot;hello&quot;</span><span class=\"o\">:</span> <span class=\"s2\">&quot;world\\\\u003C/script\\\\u003E\\\\u0026amp;&quot;</span><span class=\"p\">}&lt;/</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Ceci est compatible avec une politique Content Security stricte qui interdit l’exécution de script dans les pages. Cela maintient également une séparation propre entre des données passives et du code exécutable.</p>\n</section>\n<section id=\"last\">\n<span id=\"std-templatefilter-last\"></span><h3><code class=\"docutils literal notranslate\">last</code><a class=\"heading-anchor\" href=\"#last\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie le dernier élément de la liste.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">last</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient la liste <code class=\"docutils literal notranslate\">['a', 'b', 'c', 'd']</code>, le résultat sera <code class=\"docutils literal notranslate\">'d'</code>.</p>\n</section>\n<section id=\"length\">\n<span id=\"std-templatefilter-length\"></span><h3><code class=\"docutils literal notranslate\">length</code><a class=\"heading-anchor\" href=\"#length\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie la longueur de la valeur. Cela fonctionne aussi bien pour du texte que des listes.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">length</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">['a', 'b', 'c', 'd']</code> ou <code class=\"docutils literal notranslate\">&quot;abcd&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">4</code>.</p>\n<p>Le filtre renvoie <code class=\"docutils literal notranslate\">0</code> pour une variable non définie.</p>\n</section>\n<section id=\"length-is\">\n<span id=\"std-templatefilter-length_is\"></span><h3><code class=\"docutils literal notranslate\">length_is</code><a class=\"heading-anchor\" href=\"#length-is\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie <code class=\"docutils literal notranslate\">True</code> si la longueur de la valeur correspond au paramètre, sinon <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">length_is</span><span class=\"s2\">:&quot;4&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">['a', 'b', 'c', 'd']</code> ou <code class=\"docutils literal notranslate\">&quot;abcd&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">True</code>.</p>\n</section>\n<section id=\"linebreaks\">\n<span id=\"std-templatefilter-linebreaks\"></span><h3><code class=\"docutils literal notranslate\">linebreaks</code><a class=\"heading-anchor\" href=\"#linebreaks\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Remplace les sauts de ligne dans du texte brut par le code HTML approprié ; un saut de ligne simple devient un saut de ligne HTML (<code class=\"docutils literal notranslate\">&lt;br&gt;</code>) et un saut de ligne suivi d’une ligne vide devient un saut de paragraphe (<code class=\"docutils literal notranslate\">&lt;/p&gt;</code>).</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">linebreaks</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Joël\\nest une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&lt;p&gt;Joël&lt;br&gt;est une limace&lt;/p&gt;</code>.</p>\n</section>\n<section id=\"linebreaksbr\">\n<span id=\"std-templatefilter-linebreaksbr\"></span><h3><code class=\"docutils literal notranslate\">linebreaksbr</code><a class=\"heading-anchor\" href=\"#linebreaksbr\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit tous les sauts de ligne d’un contenu de texte brut en sauts de ligne HTML (<code class=\"docutils literal notranslate\">&lt;br&gt;</code>).</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">linebreaksbr</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Joël\\nest une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">Joël&lt;br&gt;est une limace</code>.</p>\n</section>\n<section id=\"linenumbers\">\n<span id=\"std-templatefilter-linenumbers\"></span><h3><code class=\"docutils literal notranslate\">linenumbers</code><a class=\"heading-anchor\" href=\"#linenumbers\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Affiche un texte en numérotant ses lignes.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">linenumbers</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>one\ntwo\nthree\n</code></pre></div>\n<p>le résultat sera :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>1. one\n2. two\n3. three\n</code></pre></div>\n</section>\n<section id=\"ljust\">\n<span id=\"std-templatefilter-ljust\"></span><h3><code class=\"docutils literal notranslate\">ljust</code><a class=\"heading-anchor\" href=\"#ljust\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Aligne à gauche la valeur dans un champ de largeur donnée.</p>\n<p><strong>Paramètre :</strong> taille de champ</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>&quot;<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">ljust</span><span class=\"s2\">:&quot;10&quot;</span> <span class=\"cp\">}}</span>&quot;\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Django&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Django&#160;&#160;&#160; &quot;</code>.</p>\n</section>\n<section id=\"lower\">\n<span id=\"std-templatefilter-lower\"></span><h3><code class=\"docutils literal notranslate\">lower</code><a class=\"heading-anchor\" href=\"#lower\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit une chaîne tout en minuscules.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">lower</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">J'aime FOLLEMENT cet album!</code>, le résultat sera <code class=\"docutils literal notranslate\">j'aime follement cet album!</code>.</p>\n</section>\n<section id=\"make-list\">\n<span id=\"std-templatefilter-make_list\"></span><h3><code class=\"docutils literal notranslate\">make_list</code><a class=\"heading-anchor\" href=\"#make-list\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie la valeur transformée en liste. Pour une chaîne, ce sera une liste de caractères. Pour un nombre entier, le paramètre est d’abord forcé en chaîne avant d’en faire une liste.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">make_list</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient la chaîne <code class=\"docutils literal notranslate\">&quot;Joël&quot;</code>, le résultat sera la liste <code class=\"docutils literal notranslate\">['J', 'o', 'ë', 'l']</code>. Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">123</code>, le résultat sera la liste <code class=\"docutils literal notranslate\">['1', '2', '3']</code>.</p>\n</section>\n<section id=\"phone2numeric\">\n<span id=\"std-templatefilter-phone2numeric\"></span><h3><code class=\"docutils literal notranslate\">phone2numeric</code><a class=\"heading-anchor\" href=\"#phone2numeric\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit un numéro de téléphone (pouvant contenir des lettres) en son équivalent numérique.</p>\n<p>La valeur de départ ne doit pas forcément être un numéro de téléphone valable. Toute chaîne de caractères sera transformée sans renâcler.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">phone2numeric</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">800-COLLECT</code>, le résultat sera <code class=\"docutils literal notranslate\">800-2655328</code>.</p>\n</section>\n<section id=\"pluralize\">\n<span id=\"std-templatefilter-pluralize\"></span><h3><code class=\"docutils literal notranslate\">pluralize</code><a class=\"heading-anchor\" href=\"#pluralize\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie un suffixe de pluriel si la valeur est différente de <code class=\"docutils literal notranslate\">1</code>, <code class=\"docutils literal notranslate\">'1'</code> ou d’un objet de longueur 1. Par défaut, le suffixe est <code class=\"docutils literal notranslate\">'s'</code>.</p>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>You have <span class=\"cp\">{{</span> <span class=\"nv\">num_messages</span> <span class=\"cp\">}}</span> message<span class=\"cp\">{{</span> <span class=\"nv\">num_messages</span><span class=\"o\">|</span><span class=\"nf\">pluralize</span> <span class=\"cp\">}}</span>.\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">num_messages</code> contient <code class=\"docutils literal notranslate\">1</code>, le résultat sera <code class=\"docutils literal notranslate\">You have 1 message.</code> Si <code class=\"docutils literal notranslate\">num_messages</code> contient <code class=\"docutils literal notranslate\">2</code>, le résultat sera <code class=\"docutils literal notranslate\">You have 2 messages.</code></p>\n<p>Pour les mots exigeant un suffixe autre que <code class=\"docutils literal notranslate\">'s'</code>, vous pouvez indiquer un suffixe alternatif en paramètre du filtre.</p>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>You have <span class=\"cp\">{{</span> <span class=\"nv\">num_walruses</span> <span class=\"cp\">}}</span> walrus<span class=\"cp\">{{</span> <span class=\"nv\">num_walruses</span><span class=\"o\">|</span><span class=\"nf\">pluralize</span><span class=\"s2\">:&quot;es&quot;</span> <span class=\"cp\">}}</span>.\n</code></pre></div>\n<p>Pour les mots dont le pluriel n’est pas un simple suffixe, vous pouvez indiquer à la fois un suffixe singulier et un suffixe pluriel, séparés par une virgule.</p>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>You have <span class=\"cp\">{{</span> <span class=\"nv\">num_cherries</span> <span class=\"cp\">}}</span> cherr<span class=\"cp\">{{</span> <span class=\"nv\">num_cherries</span><span class=\"o\">|</span><span class=\"nf\">pluralize</span><span class=\"s2\">:&quot;y,ies&quot;</span> <span class=\"cp\">}}</span>.\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Utilisez <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/translation/#std-templatetag-blocktranslate\"><code class=\"xref std std-ttag docutils literal notranslate\">blocktranslate</code></a> pour mettre au pluriel des chaînes à traduire.</p>\n</aside>\n</section>\n<section id=\"pprint\">\n<span id=\"std-templatefilter-pprint\"></span><h3><code class=\"docutils literal notranslate\">pprint</code><a class=\"heading-anchor\" href=\"#pprint\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Un adaptateur autour de <a class=\"reference external\" href=\"https://docs.python.org/3/library/pprint.html#pprint.pprint\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">pprint.pprint()</code></a>, à réserver vraiment pour le débogage.</p>\n</section>\n<section id=\"random\">\n<span id=\"std-templatefilter-random\"></span><h3><code class=\"docutils literal notranslate\">random</code><a class=\"heading-anchor\" href=\"#random\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie un élément aléatoire dans la liste indiquée.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">random</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient la liste <code class=\"docutils literal notranslate\">['a', 'b', 'c', 'd']</code>, le résultat pourrait être <code class=\"docutils literal notranslate\">&quot;b&quot;</code>.</p>\n</section>\n<section id=\"rjust\">\n<span id=\"std-templatefilter-rjust\"></span><h3><code class=\"docutils literal notranslate\">rjust</code><a class=\"heading-anchor\" href=\"#rjust\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Aligne à droite la valeur dans un champ de largeur donnée.</p>\n<p><strong>Paramètre :</strong> taille de champ</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>&quot;<span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">rjust</span><span class=\"s2\">:&quot;10&quot;</span> <span class=\"cp\">}}</span>&quot;\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Django&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;&#160;&#160;&#160; Django&quot;</code>.</p>\n</section>\n<section id=\"safe\">\n<span id=\"std-templatefilter-safe\"></span><h3><code class=\"docutils literal notranslate\">safe</code><a class=\"heading-anchor\" href=\"#safe\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Marque une chaîne comme n’ayant plus besoin d’être échappée avant d’être affichée dans du code HTML. Lorsque l’échappement automatique est désactivé, ce filtre n’a aucun effet.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Si vous enchaînez des filtres, un filtre appliqué après <code class=\"docutils literal notranslate\">safe</code> peut de nouveau rendre le contenu non fiable. Par exemple, le code suivant affiche la variable telle quelle, non échappée :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">var</span><span class=\"o\">|</span><span class=\"nf\">safe</span><span class=\"o\">|</span><span class=\"nf\">escape</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"safeseq\">\n<span id=\"std-templatefilter-safeseq\"></span><h3><code class=\"docutils literal notranslate\">safeseq</code><a class=\"heading-anchor\" href=\"#safeseq\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Applique le filtre <a class=\"reference internal\" href=\"#std-templatefilter-safe\"><code class=\"xref std std-tfilter docutils literal notranslate\">safe</code></a> à chaque élément d’une liste. Utile conjointement avec d’autres filtres qui agissent sur les listes, comme <a class=\"reference internal\" href=\"#std-templatefilter-join\"><code class=\"xref std std-tfilter docutils literal notranslate\">join</code></a>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">some_list</span><span class=\"o\">|</span><span class=\"nf\">safeseq</span><span class=\"o\">|</span><span class=\"nf\">join</span><span class=\"s2\">:&quot;, &quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Vous n’auriez pas pu utiliser directement le filtre <a class=\"reference internal\" href=\"#std-templatefilter-safe\"><code class=\"xref std std-tfilter docutils literal notranslate\">safe</code></a> dans ce cas, car cela aurait d’abord converti la variable en chaîne au lieu d’agir sur les éléments individuels de la liste.</p>\n</section>\n<section id=\"slice\">\n<span id=\"std-templatefilter-slice\"></span><h3><code class=\"docutils literal notranslate\">slice</code><a class=\"heading-anchor\" href=\"#slice\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie un segment de la liste.</p>\n<p>Utilise la même syntaxe que la segmentation de listes Python. Voir <a class=\"reference external\" href=\"https://diveinto.org/python3/native-datatypes.html#slicinglists\">https://diveinto.org/python3/native-datatypes.html#slicinglists</a> pour une introduction (en anglais).</p>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">some_list</span><span class=\"o\">|</span><span class=\"nf\">slice</span><span class=\"s2\">:&quot;:2&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">some_list</code> contient <code class=\"docutils literal notranslate\">['a', 'b', 'c']</code>, le résultat sera <code class=\"docutils literal notranslate\">['a', 'b']</code>.</p>\n</section>\n<section id=\"slugify\">\n<span id=\"std-templatefilter-slugify\"></span><h3><code class=\"docutils literal notranslate\">slugify</code><a class=\"heading-anchor\" href=\"#slugify\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit en ASCII. Convertit les espaces en tirets. Enlève les caractères qui ne sont ni alphanumériques, ni soulignements, ni tirets. Convertit en minuscules. Les espaces en début et fin de chaîne sont aussi enlevés.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">slugify</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">joel-est-une-limace</code>.</p>\n</section>\n<section id=\"stringformat\">\n<span id=\"std-templatefilter-stringformat\"></span><h3><code class=\"docutils literal notranslate\">stringformat</code><a class=\"heading-anchor\" href=\"#stringformat\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en forme la variable en fonction du paramètre, une spécification de chaîne de format. Celle-ci utilise la syntaxe <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#old-string-formatting\" title=\"(disponible dans Python v3.14)\"><span>printf-style String Formatting</span></a>, à l’exclusion du caractère « % » initial.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">stringformat</span><span class=\"s2\">:&quot;E&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>SI <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">10</code>, le résultat sera <code class=\"docutils literal notranslate\">1.000000E+01</code>.</p>\n</section>\n<section id=\"striptags\">\n<span id=\"std-templatefilter-striptags\"></span><h3><code class=\"docutils literal notranslate\">striptags</code><a class=\"heading-anchor\" href=\"#striptags\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Fait tout son possible pour supprimer toutes les balises [X]HTML.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">striptags</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;&lt;b&gt;Joël&lt;/b&gt; &lt;button&gt;est&lt;/button&gt; une &lt;span&gt;limace&lt;/span&gt;&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>.</p>\n<aside class=\"admonition-no-safety-guarantee admonition\" role=\"note\">\n<p class=\"admonition-title\">Aucune garantie de sécurité</p>\n<p>Notez que <code class=\"docutils literal notranslate\">striptags</code> ne donne aucune garantie que le contenu résultant ne contienne plus de balisage HTML, plus particulièrement lorsque le contenu en entrée n’est pas du code HTML valide. N’appliquez donc <strong>JAMAIS</strong> le filtre  <code class=\"docutils literal notranslate\">safe</code> sur du contenu provenant de <code class=\"docutils literal notranslate\">striptags</code>. Si vous recherchez une solution plus solide, vous pouvez utiliser la bibliothèque Python <code class=\"docutils literal notranslate\">bleach</code>, notamment sa méthode <a class=\"reference external\" href=\"https://bleach.readthedocs.io/en/latest/clean.html\">clean</a>.</p>\n</aside>\n</section>\n<section id=\"time\">\n<span id=\"std-templatefilter-time\"></span><h3><code class=\"docutils literal notranslate\">time</code><a class=\"heading-anchor\" href=\"#time\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en forme une heure selon le format indiqué.</p>\n<p>Le format indiqué peut être le format prédéfini <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-TIME_FORMAT\"><code class=\"xref std std-setting docutils literal notranslate\">TIME_FORMAT</code></a> ou un format personnalisé, comme pour le filtre <a class=\"reference internal\" href=\"#std-templatefilter-date\"><code class=\"xref std std-tfilter docutils literal notranslate\">date</code></a>. Notez que le format prédéfini est dépendant de la langue active.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span><span class=\"s2\">:&quot;H:i&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> est équivalent à <code class=\"docutils literal notranslate\">datetime.datetime.now()</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;01:23&quot;</code>.</p>\n<p>Notez que vous pouvez échapper par barre oblique inverse une chaîne de format si vous souhaitez utiliser la valeur « brute ». Dans cet exemple, « h » et « m » sont tous deux échappés par barre oblique inverse, sinon ils seraient chacun interprétés comme une chaîne de format pour afficher respectivement l’heure et le mois :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span><span class=\"s2\">:&quot;H\\h i\\m&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Le résultat affiché est « 01h 23m »..</p>\n<p>Un autre exemple :</p>\n<p>En supposant que <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_L10N</code></a> vaille <code class=\"docutils literal notranslate\">True</code> et que <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\">LANGUAGE_CODE</code></a> vaille par exemple <code class=\"docutils literal notranslate\">&quot;de&quot;</code>, alors pour :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span><span class=\"s2\">:&quot;TIME_FORMAT&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>le résultat sera <code class=\"docutils literal notranslate\">&quot;01:23&quot;</code> (le spécificateur de format <code class=\"docutils literal notranslate\">&quot;TIME_FORMAT&quot;</code> de la locale <code class=\"docutils literal notranslate\">de</code> fournie par Django contient <code class=\"docutils literal notranslate\">&quot;H:i&quot;</code>).</p>\n<p>Le filtre <code class=\"docutils literal notranslate\">time</code> n’accepte dans la chaîne de format que les paramètres concernant l’heure du jour, et non la date. Si vous avez besoin de mettre en forme une date, utilisez plutôt le filtre <a class=\"reference internal\" href=\"#std-templatefilter-date\"><code class=\"xref std std-tfilter docutils literal notranslate\">date</code></a> (éventuellement avec <a class=\"reference internal\" href=\"#std-templatefilter-time\"><code class=\"xref std std-tfilter docutils literal notranslate\">time</code></a> si vous avez besoin de produire une valeur <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime</code></a> complète).</p>\n<p>Il existe une exception à la règle ci-dessus : lorsqu’il reçoit une valeur <code class=\"docutils literal notranslate\">datetime</code> contenant une information de fuseau horaire (une instance <code class=\"docutils literal notranslate\">datetime</code> <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/timezones/#naive-vs-aware-datetimes\"><span class=\"std std-ref\">consciente</span></a>), le filtre <code class=\"docutils literal notranslate\">time</code> accepte les <a class=\"reference internal\" href=\"#date-and-time-formatting-specifiers\"><span class=\"std std-ref\">indicateurs de format</span></a> relatifs aux fuseaux horaires <code class=\"docutils literal notranslate\">'e'</code>, <code class=\"docutils literal notranslate\">'O'</code> , <code class=\"docutils literal notranslate\">'T'</code> et <code class=\"docutils literal notranslate\">'Z'</code>.</p>\n<p>Lorsqu’aucune chaîne de format n’est indiquée, c’est le format <code class=\"docutils literal notranslate\">TIME_FORMAT</code> qui est utilisé :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>est identique à :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">time</span><span class=\"s2\">:&quot;TIME_FORMAT&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n<section id=\"timesince\">\n<span id=\"std-templatefilter-timesince\"></span><h3><code class=\"docutils literal notranslate\">timesince</code><a class=\"heading-anchor\" href=\"#timesince\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Met en forme une date de manière relative à cette date (par ex. « 4 jours, 6 heures »).</p>\n<p>Accepte un paramètre facultatif sous forme de variable contenant la date à utiliser comme point de comparaison (sans paramètre, le point de comparaison est <em>maintenant</em>). Par exemple, si <code class=\"docutils literal notranslate\">blog_date</code> est une instance de date représentant minuit le 1 juin 2006 et que <code class=\"docutils literal notranslate\">comment_date</code> est une instance de date représentant le 1 juin 2006 à 08:00, le code suivant renverra « 8 heures »:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">blog_date</span><span class=\"o\">|</span><span class=\"nf\">timesince</span><span class=\"o\">:</span><span class=\"nv\">comment_date</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>La comparaison entre des dates/heures naïves et conscientes (en rapport au fuseau horaire) renvoie une chaîne vide.</p>\n<p>Les minutes sont la plus petite unité utilisée, et « 0 minute » est renvoyé pour toute date dans le futur en fonction du point de comparaison.</p>\n</section>\n<section id=\"timeuntil\">\n<span id=\"std-templatefilter-timeuntil\"></span><h3><code class=\"docutils literal notranslate\">timeuntil</code><a class=\"heading-anchor\" href=\"#timeuntil\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Semblable à <code class=\"docutils literal notranslate\">timesince</code>, sauf qu’il mesure le temps depuis maintenant jusqu’à la date ou date/heure indiquée. Par exemple, si nous sommes le 1er juin 2006 et que <code class=\"docutils literal notranslate\">conference_date</code> est une instance de date contenant le 29 juin 2006, <code class=\"docutils literal notranslate\">{{ conference_date|timeuntil }}</code> renverra « 4 semaines ».</p>\n<p>Accepte un paramètre facultatif sous forme de variable contenant la date à utiliser comme point de comparaison (au lieu de <em>maintenant</em>). Si <code class=\"docutils literal notranslate\">from_date</code> contient le 22 juin 2006, le code suivant renverra « 1 semaine » :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">conference_date</span><span class=\"o\">|</span><span class=\"nf\">timeuntil</span><span class=\"o\">:</span><span class=\"nv\">from_date</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>La comparaison entre des dates/heures naïves et conscientes (en rapport au fuseau horaire) renvoie une chaîne vide.</p>\n<p>Les minutes sont la plus petite unité utilisée, et « 0 minute » est renvoyé pour toute date dans le passé en fonction du point de comparaison.</p>\n</section>\n<section id=\"title\">\n<span id=\"std-templatefilter-title\"></span><h3><code class=\"docutils literal notranslate\">title</code><a class=\"heading-anchor\" href=\"#title\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit une chaîne en casse de titre de type anglophone en mettant en majuscule la première lettre de chaque mot et en minuscules les autres lettres. Cette balise ne fait aucun effort pour conserver en minuscules les mots « utilitaires ».</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">title</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;mon PREMIER article&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Mon Premier Article&quot;</code>.</p>\n</section>\n<section id=\"truncatechars\">\n<span id=\"std-templatefilter-truncatechars\"></span><h3><code class=\"docutils literal notranslate\">truncatechars</code><a class=\"heading-anchor\" href=\"#truncatechars\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tronque une chaîne si elle est plus longue que le nombre de caractères indiqué. Les chaînes tronquées se terminent par un caractère points de suspension (« … »).</p>\n<p><strong>Paramètre :</strong> le nombre maximum de caractères du résultat</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">truncatechars</span><span class=\"o\">:</span><span class=\"m\">7</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Joël e…&quot;</code>.</p>\n</section>\n<section id=\"truncatechars-html\">\n<span id=\"std-templatefilter-truncatechars_html\"></span><h3><code class=\"docutils literal notranslate\">truncatechars_html</code><a class=\"heading-anchor\" href=\"#truncatechars-html\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Semblable à <a class=\"reference internal\" href=\"#std-templatefilter-truncatechars\"><code class=\"xref std std-tfilter docutils literal notranslate\">truncatechars</code></a>, mais en tenant compte des balises HTML. Toute balise ouverte dans la chaîne et non fermée avant le point de troncature est immédiatement fermée après la troncature.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">truncatechars_html</span><span class=\"o\">:</span><span class=\"m\">7</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;&lt;p&gt;Joël est une limace&lt;/p&gt;&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;&lt;p&gt;Joël e…&lt;/p&gt;&quot;</code>.</p>\n<p>Les sauts de ligne dans le contenu HTML sont préservés.</p>\n</section>\n<section id=\"truncatewords\">\n<span id=\"std-templatefilter-truncatewords\"></span><h3><code class=\"docutils literal notranslate\">truncatewords</code><a class=\"heading-anchor\" href=\"#truncatewords\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tronque une chaîne après un certain nombre de mots.</p>\n<p><strong>Paramètre :</strong> le nombre maximum de mots du résultat</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">truncatewords</span><span class=\"o\">:</span><span class=\"m\">2</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Joël est …&quot;</code>.</p>\n<p>Les sauts de ligne à l’intérieur de la valeur seront enlevés.</p>\n</section>\n<section id=\"truncatewords-html\">\n<span id=\"std-templatefilter-truncatewords_html\"></span><h3><code class=\"docutils literal notranslate\">truncatewords_html</code><a class=\"heading-anchor\" href=\"#truncatewords-html\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Semblable à <a class=\"reference internal\" href=\"#std-templatefilter-truncatewords\"><code class=\"xref std std-tfilter docutils literal notranslate\">truncatewords</code></a>, mais en tenant compte des balises HTML. Toute balise ouverte dans la chaîne et non fermée avant le point de troncature est immédiatement fermée après la troncature.</p>\n<p>Ce filtre est moins efficace que <a class=\"reference internal\" href=\"#std-templatefilter-truncatewords\"><code class=\"xref std std-tfilter docutils literal notranslate\">truncatewords</code></a>, il ne devrait donc être employé que lorsque l’on agit sur du texte contenant du HTML.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">truncatewords_html</span><span class=\"o\">:</span><span class=\"m\">2</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;&lt;p&gt;Joël est une limace&lt;/p&gt;&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;&lt;p&gt;Joël est …&lt;/p&gt;&quot;</code>.</p>\n<p>Les sauts de ligne dans le contenu HTML sont préservés.</p>\n</section>\n<section id=\"unordered-list\">\n<span id=\"std-templatefilter-unordered_list\"></span><h3><code class=\"docutils literal notranslate\">unordered_list</code><a class=\"heading-anchor\" href=\"#unordered-list\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Accepte des listes imbriquées et les traite récursivement pour obtenir une liste HTML non ordonnée, <strong>sans</strong> les balises &lt;ul&gt; ouvrantes et fermantes.</p>\n<p>Il est nécessaire que la liste soit dans le bon format. Par exemple, si <code class=\"docutils literal notranslate\">var</code> contient <code class=\"docutils literal notranslate\">['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]</code>, le résultat de <code class=\"docutils literal notranslate\">{{ var|unordered_list }}</code> sera :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>States\n<span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Kansas\n        <span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n                <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Lawrence<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n                <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Topeka<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Illinois<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"upper\">\n<span id=\"std-templatefilter-upper\"></span><h3><code class=\"docutils literal notranslate\">upper</code><a class=\"heading-anchor\" href=\"#upper\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit une chaîne tout en majuscules.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">upper</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;JOËL EST UNE LIMACE&quot;</code>.</p>\n</section>\n<section id=\"urlencode\">\n<span id=\"std-templatefilter-urlencode\"></span><h3><code class=\"docutils literal notranslate\">urlencode</code><a class=\"heading-anchor\" href=\"#urlencode\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Échappe une valeur pour être incluse dans une URL.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">urlencode</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;https://www.example.org/foo?a=b&amp;c=d&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd&quot;</code>.</p>\n<p>Il est possible de fournir un paramètre facultatif contenant les caractères qui ne doivent pas être échappés.</p>\n<p>Sans ce paramètre, le caractère « / » est considéré comme sûr. Il est possible de fournir une chaîne vide pour indiquer que <em>tous</em> les caractères doivent être échappés. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">urlencode</span><span class=\"s2\">:&quot;&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;https://www.example.org/&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;https%3A%2F%2Fwww.example.org%2F&quot;</code>.</p>\n</section>\n<section id=\"urlize\">\n<span id=\"std-templatefilter-urlize\"></span><h3><code class=\"docutils literal notranslate\">urlize</code><a class=\"heading-anchor\" href=\"#urlize\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit les URL et les adresses électroniques dans le texte en hyperliens.</p>\n<p>Cette balise de gabarit fonctionne avec des liens préfixés par <code class=\"docutils literal notranslate\">http://</code>, <code class=\"docutils literal notranslate\">https://</code> ou <code class=\"docutils literal notranslate\">www.</code>. Par exemple, <code class=\"docutils literal notranslate\">https://goo.gl/aia1t</code> sera converti mais  <code class=\"docutils literal notranslate\">goo.gl/aia1t</code> ne le sera pas.</p>\n<p>Il convertit également les liens « noms de domaine » s’ils se terminent par l’un des domaines de premier niveau de base (<code class=\"docutils literal notranslate\">.com</code>, <code class=\"docutils literal notranslate\">.edu</code>, <code class=\"docutils literal notranslate\">.gov</code>, <code class=\"docutils literal notranslate\">.int</code>, <code class=\"docutils literal notranslate\">.mil</code>, <code class=\"docutils literal notranslate\">.net</code> et <code class=\"docutils literal notranslate\">.org</code>). Par exemple, <code class=\"docutils literal notranslate\">djangoproject.com</code> sera converti.</p>\n<p>Les liens peuvent se terminer par de la ponctuation (points, virgules, parenthèse fermante) et peuvent commencer par de la ponctuation (parenthèse ouvrante) ; <code class=\"docutils literal notranslate\">urlize</code> n’en sera pas perturbé pour autant.</p>\n<p>Les liens générés par <code class=\"docutils literal notranslate\">urlize</code> reçoivent l’attribut <code class=\"docutils literal notranslate\">rel=&quot;nofollow&quot;</code>.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">urlize</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;Visitez www.djangoproject.com&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Visitez &lt;a href=&quot;http://www.djangoproject.com&quot; rel=&quot;nofollow&quot;&gt;www.djangoproject.com&lt;/a&gt;&quot;</code>.</p>\n<p>En plus des liens de type Web, <code class=\"docutils literal notranslate\">urlize</code> convertit aussi les adresses électroniques en liens <code class=\"docutils literal notranslate\">mailto:</code>. Si <code class=\"docutils literal notranslate\">value</code> contient <code class=\"docutils literal notranslate\">&quot;Envoyez les questions à foo&#64;example.com&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">&quot;Envoyez les questions à &lt;a href=&quot;mailto:foo&#64;example.com&quot;&gt;foo&#64;example.com&lt;/a&gt;&quot;</code>.</p>\n<p>Le filtre <code class=\"docutils literal notranslate\">urlize</code> accepte également un paramètre facultatif <code class=\"docutils literal notranslate\">autoescape</code>. Si celui-ci vaut <code class=\"docutils literal notranslate\">True</code>, le texte du lien et les URL seront échappés par le filtre <a class=\"reference internal\" href=\"#std-templatefilter-escape\"><code class=\"xref std std-tfilter docutils literal notranslate\">escape</code></a> de Django. La valeur par défaut de <code class=\"docutils literal notranslate\">autoescape</code> est <code class=\"docutils literal notranslate\">True</code>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Si <code class=\"docutils literal notranslate\">urlize</code> est appliqué à du texte qui contient déjà des balises HTML ou à des adresses électroniques contenant des guillemets simples (<code class=\"docutils literal notranslate\">'</code>), les choses ne se passeront pas comme prévu. N’appliquez ce filtre qu’à du texte pur.</p>\n</aside>\n</section>\n<section id=\"urlizetrunc\">\n<span id=\"std-templatefilter-urlizetrunc\"></span><h3><code class=\"docutils literal notranslate\">urlizetrunc</code><a class=\"heading-anchor\" href=\"#urlizetrunc\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Convertit les URL et les adresses électroniques dans le texte en hyperliens tout comme <a class=\"reference internal\" href=\"#urlize\">urlize</a>, mais tronque le texte des URL plus long que la limite du nombre de caractères indiquée.</p>\n<p><strong>Paramètre :</strong> le nombre maximum de caractères que le texte du lien contiendra après avoir été tronqué si nécessaire, y compris l’ellipse ajoutée par la troncature, le cas échéant.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">urlizetrunc</span><span class=\"o\">:</span><span class=\"m\">15</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;Visitez www.djangoproject.com&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">'Visitez &lt;a href=&quot;http://www.djangoproject.com&quot; rel=&quot;nofollow&quot;&gt;www.djangoproj…&lt;/a&gt;'</code>.</p>\n<p>Comme pour <a class=\"reference internal\" href=\"#urlize\">urlize</a>, ce filtre ne doit être appliqué qu’à du texte pur.</p>\n</section>\n<section id=\"wordcount\">\n<span id=\"std-templatefilter-wordcount\"></span><h3><code class=\"docutils literal notranslate\">wordcount</code><a class=\"heading-anchor\" href=\"#wordcount\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Renvoie le nombre de mots.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">wordcount</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">&quot;Joël est une limace&quot;</code>, le résultat sera <code class=\"docutils literal notranslate\">4</code>.</p>\n</section>\n<section id=\"wordwrap\">\n<span id=\"std-templatefilter-wordwrap\"></span><h3><code class=\"docutils literal notranslate\">wordwrap</code><a class=\"heading-anchor\" href=\"#wordwrap\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ajoute des sauts de ligne d’après une longueur de ligne maximale.</p>\n<p><strong>Paramètre :</strong> le nombre de caractères après lequel un saut de ligne est rajouté dans le texte.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">wordwrap</span><span class=\"o\">:</span><span class=\"m\">5</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\">value</code> vaut <code class=\"docutils literal notranslate\">Joel is a slug</code>, le résultat sera :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>Joel\nis a\nslug\n</code></pre></div>\n</section>\n<section id=\"yesno\">\n<span id=\"std-templatefilter-yesno\"></span><h3><code class=\"docutils literal notranslate\">yesno</code><a class=\"heading-anchor\" href=\"#yesno\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Fait correspondre les valeurs vrai (<code class=\"docutils literal notranslate\">True</code>), faux (<code class=\"docutils literal notranslate\">False</code>) et facultativement <code class=\"docutils literal notranslate\">None</code> respectivement aux chaînes de caractères « yes », « no », « maybe », ou à une liste personnalisée de chaînes séparées par des virgules, et renvoie la chaîne correspondant à la valeur transmise :</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">value</span><span class=\"o\">|</span><span class=\"nf\">yesno</span><span class=\"s2\">:&quot;yeah,no,maybe&quot;</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Valeur</p></th>\n<th class=\"head\"><p>Paramètre</p></th>\n<th class=\"head\"><p>Affiche</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">True</code></p></td>\n<td></td>\n<td><p><code class=\"docutils literal notranslate\">yes</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">True</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;yeah,no,maybe&quot;</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">yeah</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">False</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;yeah,no,maybe&quot;</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">no</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">None</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;yeah,no,maybe&quot;</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">maybe</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">None</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;yeah,no&quot;</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">no</code> (convertit <code class=\"docutils literal notranslate\">None</code> en <code class=\"docutils literal notranslate\">False</code> si aucune correspondance n’est indiquée pour <code class=\"docutils literal notranslate\">None</code>)</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n</section>\n<section id=\"internationalization-tags-and-filters\">\n<h2>Balises et filtres d’internationalisation<a class=\"heading-anchor\" href=\"#internationalization-tags-and-filters\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django fournit des balises et des filtres de gabarit pour contrôler chaque aspect de <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/\"><span class=\"doc\">l’internationalization</span></a> dans les gabarits. Ils permettent un contrôle plus fin sur les traductions, la mise en forme et les conversions de fuseaux horaires.</p>\n<section id=\"i18n\">\n<h3><code class=\"docutils literal notranslate\">i18n</code><a class=\"heading-anchor\" href=\"#i18n\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cette bibliothèque permet d’indiquer du texte à traduire dans les gabarits. Pour l’activer, définissez <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_I18N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_I18N</code></a> à <code class=\"docutils literal notranslate\">True</code> puis chargez-la avec <code class=\"docutils literal notranslate\">{% load i18n %}</code>.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/translation/#specifying-translation-strings-in-template-code\"><span class=\"std std-ref\">Internationalisation : dans le code des gabarits</span></a>.</p>\n</section>\n<section id=\"l10n\">\n<h3><code class=\"docutils literal notranslate\">l10n</code><a class=\"heading-anchor\" href=\"#l10n\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cette bibliothèque permet de contrôler la régionalisation des valeurs dans les gabarits. Il suffit de charger la bibliothèque en utilisant <code class=\"docutils literal notranslate\">{% load l10n %}</code>, mais il est souvent préférable de définir aussi <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_L10N</code></a> à <code class=\"docutils literal notranslate\">True</code> pour que la régionalisation soit active par défaut.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/formatting/#topic-l10n-templates\"><span class=\"std std-ref\">Contrôle de la régionalisation dans les gabarits</span></a>.</p>\n</section>\n<section id=\"tz\">\n<h3><code class=\"docutils literal notranslate\">tz</code><a class=\"heading-anchor\" href=\"#tz\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cette bibliothèque permet de contrôler les conversions de fuseaux horaires dans les gabarits. Comme <code class=\"docutils literal notranslate\">l10n</code>, il suffit de charger la bibliothèque avec <code class=\"docutils literal notranslate\">{% load tz %}</code>, mais il est préférable de définir aussi <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> à <code class=\"docutils literal notranslate\">True</code> pour que la conversion en temps locale se fasse par défaut.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/topics/i18n/timezones/#time-zones-in-templates\"><span class=\"std std-ref\">Affichage de fuseaux horaires conscients dans les gabarits</span></a>.</p>\n</section>\n</section>\n<section id=\"other-tags-and-filters-libraries\">\n<h2>Autres bibliothèques de balises et de filtres<a class=\"heading-anchor\" href=\"#other-tags-and-filters-libraries\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django contient quelques autres bibliothèques de balises de gabarit que vous devez activer explicitement dans votre réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> et qu’il fut charger dans les gabarits avec la balise <a class=\"reference internal\" href=\"#std-templatetag-load\"><code class=\"xref std std-ttag docutils literal notranslate\">{% load %}</code></a>.</p>\n<section id=\"django-contrib-humanize\">\n<h3><code class=\"docutils literal notranslate\">django.contrib.humanize</code><a class=\"heading-anchor\" href=\"#django-contrib-humanize\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Un ensemble de filtres de gabarit utiles pour ajouter une touche « humaine » aux données. Voir <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/humanize/\"><span class=\"doc\">django.contrib.humanize</span></a>.</p>\n</section>\n<section id=\"static\">\n<h3><code class=\"docutils literal notranslate\">static</code><a class=\"heading-anchor\" href=\"#static\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"std-templatetag-static\">\n<span id=\"id7\"></span><h4><code class=\"docutils literal notranslate\">static</code><a class=\"heading-anchor\" href=\"#std-templatetag-static\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pour créer des liens vers les fichiers statiques enregistrés dans <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a>, Django fournit une balise de gabarit <a class=\"reference internal\" href=\"#std-templatetag-static\"><code class=\"xref std std-ttag docutils literal notranslate\">static</code></a>. Si l’application <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.staticfiles</code></a> est installée, la balise servira les fichiers en utilisant la méthode <code class=\"docutils literal notranslate\">url()</code> du stockage présent dans <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"s1\">&#39;images/hi.jpg&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;Hi!&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Elle est aussi capable d’exploiter des variables de contexte standards ; par exemple en supposant qu’une variable <code class=\"docutils literal notranslate\">user_stylesheet</code> est transmise au gabarit :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">link</span> <span class=\"na\">rel</span><span class=\"o\">=</span><span class=\"s\">&quot;stylesheet&quot;</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"nv\">user_stylesheet</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text/css&quot;</span> <span class=\"na\">media</span><span class=\"o\">=</span><span class=\"s\">&quot;screen&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Si vous souhaitez récupérer une URL statique sans l’afficher, vous pouvez effectuer un appel un peu différent :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"s2\">&quot;images/hi.jpg&quot;</span> <span class=\"k\">as</span> <span class=\"nv\">myphoto</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">myphoto</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<aside class=\"admonition-using-jinja2-templates admonition\" role=\"note\">\n<p class=\"admonition-title\">Utilisation de gabarits Jinja2</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/topics/templates/#django.template.backends.jinja2.Jinja2\" title=\"django.template.backends.jinja2.Jinja2\"><code class=\"xref py py-class docutils literal notranslate\">Jinja2</code></a> pour des informations sur l’utilisation de la balise <code class=\"docutils literal notranslate\">static</code> avec Jinja2.</p>\n</aside>\n</section>\n<section id=\"get-static-prefix\">\n<span id=\"std-templatetag-get_static_prefix\"></span><h4><code class=\"docutils literal notranslate\">get_static_prefix</code><a class=\"heading-anchor\" href=\"#get-static-prefix\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>La préférence devrait être donnée à la balise de gabarit <a class=\"reference internal\" href=\"#std-templatetag-static\"><code class=\"xref std std-ttag docutils literal notranslate\">static</code></a>, mais si vous avez besoin d’un contrôle plus fin sur l’endroit et la manière dont <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> est injecté dans le gabarit, vous pouvez utiliser la balise de gabarit <a class=\"reference internal\" href=\"#std-templatetag-get_static_prefix\"><code class=\"xref std std-ttag docutils literal notranslate\">get_static_prefix</code></a>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">get_static_prefix</span> <span class=\"cp\">%}</span><span class=\"s\">images/hi.jpg&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;Hi!&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Il existe aussi une seconde forme utilisable pour empêcher du traitement inutile si vous avez besoin de la même valeur plusieurs fois :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">get_static_prefix</span> <span class=\"k\">as</span> <span class=\"nv\">STATIC_PREFIX</span> <span class=\"cp\">%}</span>\n\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">STATIC_PREFIX</span> <span class=\"cp\">}}</span><span class=\"s\">images/hi.jpg&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;Hi!&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">STATIC_PREFIX</span> <span class=\"cp\">}}</span><span class=\"s\">images/hi2.jpg&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;Hello!&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"get-media-prefix\">\n<span id=\"std-templatetag-get_media_prefix\"></span><h4><code class=\"docutils literal notranslate\">get_media_prefix</code><a class=\"heading-anchor\" href=\"#get-media-prefix\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Semblable à <a class=\"reference internal\" href=\"#std-templatetag-get_static_prefix\"><code class=\"xref std std-ttag docutils literal notranslate\">get_static_prefix</code></a>, <code class=\"docutils literal notranslate\">get_media_prefix</code> crée une variable de gabarit contenant le préfixe de média <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_URL</code></a>, par exemple :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">body</span> <span class=\"na\">data-media-url</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">get_media_prefix</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>En stockant la valeur dans un attribut de données, nous nous assurons qu’elle soit proprement échappée si nous souhaitons l’utiliser dans un contexte JavaScript.</p>\n</section>\n</section>\n</section>","rootId":"built-in-template-tags-and-filters","toc":[{"title":"Référence des balises intégrées","anchor":"built-in-tag-reference","children":[{"title":"autoescape","anchor":"autoescape","children":[]},{"title":"block","anchor":"block","children":[]},{"title":"comment","anchor":"comment","children":[]},{"title":"csrf_token","anchor":"csrf-token","children":[]},{"title":"cycle","anchor":"cycle","children":[]},{"title":"debug","anchor":"debug","children":[]},{"title":"extends","anchor":"extends","children":[]},{"title":"filter","anchor":"filter","children":[]},{"title":"firstof","anchor":"firstof","children":[]},{"title":"for","anchor":"for","children":[]},{"title":"for … empty","anchor":"for-empty","children":[]},{"title":"if","anchor":"if","children":[{"title":"Opérateurs booléens","anchor":"boolean-operators","children":[{"title":"Opérateur ==","anchor":"operator","children":[]},{"title":"Opérateur !=","anchor":"id1","children":[]},{"title":"Opérateur <","anchor":"id2","children":[]},{"title":"Opérateur >","anchor":"id3","children":[]},{"title":"Opérateur <=","anchor":"id4","children":[]},{"title":"Opérateur >=","anchor":"id5","children":[]},{"title":"Opérateur in","anchor":"in-operator","children":[]},{"title":"Opérateur not in","anchor":"not-in-operator","children":[]},{"title":"Opérateur is","anchor":"is-operator","children":[]},{"title":"Opérateur is not","anchor":"is-not-operator","children":[]}]},{"title":"Filtres","anchor":"filters","children":[]},{"title":"Expressions complexes","anchor":"complex-expressions","children":[]}]},{"title":"ifchanged","anchor":"ifchanged","children":[]},{"title":"include","anchor":"include","children":[]},{"title":"load","anchor":"load","children":[]},{"title":"lorem","anchor":"lorem","children":[]},{"title":"now","anchor":"now","children":[]},{"title":"regroup","anchor":"regroup","children":[{"title":"Groupement selon d’autres propriétés","anchor":"grouping-on-other-properties","children":[]}]},{"title":"resetcycle","anchor":"resetcycle","children":[]},{"title":"spaceless","anchor":"spaceless","children":[]},{"title":"templatetag","anchor":"templatetag","children":[]},{"title":"url","anchor":"url","children":[]},{"title":"verbatim","anchor":"verbatim","children":[]},{"title":"widthratio","anchor":"widthratio","children":[]},{"title":"with","anchor":"with","children":[]}]},{"title":"Référence des filtres intégrés","anchor":"built-in-filter-reference","children":[{"title":"add","anchor":"add","children":[]},{"title":"addslashes","anchor":"addslashes","children":[]},{"title":"capfirst","anchor":"capfirst","children":[]},{"title":"center","anchor":"center","children":[]},{"title":"cut","anchor":"cut","children":[]},{"title":"date","anchor":"date","children":[]},{"title":"default","anchor":"default","children":[]},{"title":"default_if_none","anchor":"default-if-none","children":[]},{"title":"dictsort","anchor":"dictsort","children":[]},{"title":"dictsortreversed","anchor":"dictsortreversed","children":[]},{"title":"divisibleby","anchor":"divisibleby","children":[]},{"title":"escape","anchor":"escape","children":[]},{"title":"escapejs","anchor":"escapejs","children":[]},{"title":"filesizeformat","anchor":"filesizeformat","children":[]},{"title":"first","anchor":"first","children":[]},{"title":"floatformat","anchor":"floatformat","children":[]},{"title":"force_escape","anchor":"force-escape","children":[]},{"title":"get_digit","anchor":"get-digit","children":[]},{"title":"iriencode","anchor":"iriencode","children":[]},{"title":"join","anchor":"join","children":[]},{"title":"json_script","anchor":"json-script","children":[]},{"title":"last","anchor":"last","children":[]},{"title":"length","anchor":"length","children":[]},{"title":"length_is","anchor":"length-is","children":[]},{"title":"linebreaks","anchor":"linebreaks","children":[]},{"title":"linebreaksbr","anchor":"linebreaksbr","children":[]},{"title":"linenumbers","anchor":"linenumbers","children":[]},{"title":"ljust","anchor":"ljust","children":[]},{"title":"lower","anchor":"lower","children":[]},{"title":"make_list","anchor":"make-list","children":[]},{"title":"phone2numeric","anchor":"phone2numeric","children":[]},{"title":"pluralize","anchor":"pluralize","children":[]},{"title":"pprint","anchor":"pprint","children":[]},{"title":"random","anchor":"random","children":[]},{"title":"rjust","anchor":"rjust","children":[]},{"title":"safe","anchor":"safe","children":[]},{"title":"safeseq","anchor":"safeseq","children":[]},{"title":"slice","anchor":"slice","children":[]},{"title":"slugify","anchor":"slugify","children":[]},{"title":"stringformat","anchor":"stringformat","children":[]},{"title":"striptags","anchor":"striptags","children":[]},{"title":"time","anchor":"time","children":[]},{"title":"timesince","anchor":"timesince","children":[]},{"title":"timeuntil","anchor":"timeuntil","children":[]},{"title":"title","anchor":"title","children":[]},{"title":"truncatechars","anchor":"truncatechars","children":[]},{"title":"truncatechars_html","anchor":"truncatechars-html","children":[]},{"title":"truncatewords","anchor":"truncatewords","children":[]},{"title":"truncatewords_html","anchor":"truncatewords-html","children":[]},{"title":"unordered_list","anchor":"unordered-list","children":[]},{"title":"upper","anchor":"upper","children":[]},{"title":"urlencode","anchor":"urlencode","children":[]},{"title":"urlize","anchor":"urlize","children":[]},{"title":"urlizetrunc","anchor":"urlizetrunc","children":[]},{"title":"wordcount","anchor":"wordcount","children":[]},{"title":"wordwrap","anchor":"wordwrap","children":[]},{"title":"yesno","anchor":"yesno","children":[]}]},{"title":"Balises et filtres d’internationalisation","anchor":"internationalization-tags-and-filters","children":[{"title":"i18n","anchor":"i18n","children":[]},{"title":"l10n","anchor":"l10n","children":[]},{"title":"tz","anchor":"tz","children":[]}]},{"title":"Autres bibliothèques de balises et de filtres","anchor":"other-tags-and-filters-libraries","children":[{"title":"django.contrib.humanize","anchor":"django-contrib-humanize","children":[]},{"title":"static","anchor":"static","children":[{"title":"static","anchor":"std-templatetag-static","children":[]},{"title":"get_static_prefix","anchor":"get-static-prefix","children":[]},{"title":"get_media_prefix","anchor":"get-media-prefix","children":[]}]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/4.0/ref/"},{"docname":"ref/templates/index","title":"Gabarits","url":"/fr/4.0/ref/templates/"}],"prev":{"docname":"ref/templates/language","title":"Le langage de gabarit de Django","url":"/fr/4.0/ref/templates/language/"},"next":{"docname":"ref/templates/api","title":"Le langage de gabarit de Django : pour les programmeurs Python","url":"/fr/4.0/ref/templates/api/"},"formats":{"html":"/fr/4.0/ref/templates/builtins/","markdown":"/fr/4.0/ref/templates/builtins.md","json":"/fr/4.0/ref/templates/builtins.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/ref/templates/builtins.txt","official":"https://docs.djangoproject.com/fr/4.0/ref/templates/builtins/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}