Django -Créer un filtre jinja pour django
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
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
Ensuite on fournit au moteur de template (ici django) cette chaîne afin qu'il n'échappe pas cette balise 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
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
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