Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Django -Créer un filtre jinja pour django

Date de publication 15 févr. 2022
Dans une application Django nous avons besoin d'utiliser les templates surtout si la partie front de votre application n'est pas détachée.

Pour faire le rendu HTML par défaut django utilise
django.template.backends.django.DjangoTemplates

Il est important de noter que cette implémentation est très proche de Jinja mais c'est bien django qui est derrière. Aussi certains filtres jinja ne sont pas accessibles.
Il peut vous arriver du coup de vouloir en ajouter.

Pour cela il suffit de créer un dossier templatetags dans votre application django

A l'intérieur on retrouvera les différents filtres rangés dans des fichiers différents.
Créez un fichier html_filter.py où nous allons mettre le code de notre filtre

Ce bout de code utilise le parseur LXML qui a une propriété intéressante qui conserve uniquement les tags souhaités
allow_tags

Ensuite on fournit au moteur de template (ici django) cette chaîne afin qu'il n'échappe pas cette balise HTML
template = engines["django"].from_string(clean_html)


Maintenant que notre filtre est créé il faut l'enregistrer, pour cela on utilise

Il nous reste plus qu'à appeler notre filtre dans le moteur de templating
<p>{{ text|html_filter:"a,br" }}</p>

On précise les tags voulus en tant que chaine de caractère séparé par des virgules, juste après le caractère deux points
blog comments powered by Disqus