Templates

Filtres & fonctions Tera

Filtres d'assets

FiltreDescriptionExemple
staticPréfixe URL statique de l'app{{ "css/main.css" | static }}
mediaPréfixe URL média de l'app{{ "photo.jpg" | media }}

Filtre Markdown

FiltreDescriptionExemple
markdownConvertit du Markdown en HTML, sanitisé (anti-XSS){{ page.content | markdown }}

Le filtre markdown déclare is_safe() — son HTML est émis sans échappement, \| safe est inutile et n'a pas besoin d'être ajouté manuellement.

La sortie est sanitisée via ammonia : le HTML brut dangereux (<script>, gestionnaires on*) et les URL javascript: / data: des liens et images sont supprimés. Le Markdown légitime (titres, tables, listes, liens, images, code) est préservé — un Markdown rédigé par un utilisateur peut donc être rendu sans risque.


Filtres sanitize & plaintext

FiltreDescriptionExemple
sanitizeRe-sanitise du HTML rich stocké et le rend en HTML{{ entry.description | sanitize }}
plaintextStrip de tous les tags + décodage des entités → texte brut{{ entry.description | plaintext }}

sanitize relance ammonia au moment du rendu ; comme markdown, il déclare is_safe() directement (pas de \| safe à ajouter), donc le HTML émis est toujours fraîchement nettoyé — la sanitisation se fait à la sortie, sans jamais faire confiance à ce qui est stocké. À utiliser pour afficher un champ rich-text en HTML rendu.

plaintext projette une valeur en texte brut via le sanitizer strict (tags retirés, entités décodées). Il reste auto-échappé (pas de \| safe), donc un &gt; stocké s'affiche >. À utiliser pour les aperçus — ex. cellules de liste — où du HTML bloc rendu casserait la mise en page.

Les vues admin detail/list les emploient automatiquement pour les colonnes classées comme contenu rich ; tu les appelles rarement à la main.


Filtre de formulaire

FiltreDescriptionExemple
formRendu complet du formulaire{{ nom_form | form }}
form(field='xxx')Rendu d'un seul champ{{ nom_form | form(field='email') }}
csrf_fieldGénère un input hidden CSRF{{ csrf_token | csrf_field }}

Les trois déclarent is_safe() — leur sortie est émise sans échappement, \| safe est inutile.


Fonctions Tera

FonctionDescriptionExemple
link(link='...')Résolution d'URL nommée{{ link(link='index') }}

Variables de contexte auto-injectées

VariableDescription
csrf_tokenToken CSRF masqué (utilisé par {% csrf %} et | csrf_field)
csp_nonceValeur nonce CSP du header (utilisé par {% csp %})
messagesFlash messages de la requête
userUtilisateur authentifié courant (si connecté)
current_pathPath de l'URL courante, sans query string (utile pour rel="canonical", og:url, navigation active)