Vu le manque de temps dont je souffre, je n’ai pas vraiment le temps d’écrire de long billet. J’espère pouvoir changer cela assez vite. Mais en attendant, une petite astuce que j’ai découvert il y a peu et que pour l’instant, je dois l’avouer, je n’utilise pas beaucoup. Mais ça peut-être utile.
Django offre deux outils merveilleux pour bosser avec ses templates, les templatetags et les filter. J’en utilise à tour de bras, sans arrêts.
Ce qu’il y a d’ennuyeux, il faut bien le dire, c’est dans le cas où l’on utilise un filter, dans tout les templates, de devoir faire, dans chaque template le {% load myfilter %}
Sachant qu’en plus si j’inclus un template A dans un autre B, le template A ‘n’hérite pas’ des filters et templatetags qui ont été déclaré dans B. Je devrais donc de nouveau dans A me refrapper les {% load ..
Pas de quoi raler plus que ça, je vous l’accorde.
Mais quand même, ce n’est pas très DRY tout ça, si on doit faire un load dans tout les templates de son appli.
Heureusement, papi Django a pensé à nous. Et il y a la possibilité de déclarer un filter comme étant un builtins. Il sera donc inclus par défaut, dans tout les templates.
Comment on fait ce petit miracle ? Rien de plus facile. Il suffit de mettre quelque part dans son code (dans l’__init__ de son app par exemple ) :
add_to_builtins('nom_app.templatetags.nom_fichier_filter')
C’est tout de même assez facile, non ?
Par contre, je pense qu’il ne faut pas abuser de cette petite astuce, je soupçonne une diminution des perfs possible dans le cas d’une utilisation sans modération.
5 Responses to “Ajouter ses filters perso aux filters builtins”
Sorry, the comment form is closed at this time.
Bon à savoir !
(Je m’étais habitué aux blagues dans le titre et dans le post et là malheureusement il n’y en a pas 🙁 )
Arf… pris par le temps et le boulot, j’ai oublié de mettre de petites blagues très rigolote de partout. Bon la prochaine fois, j’en mettrais deux fois plus.
Pour me rattraper.
Excellente astuce, ca va clairement me servir ! Merci !
“d’une utilisation non modération.” huhu y a un problème dans cette fin de phrase.
merci pour cette astuce 🙂
rahh, la faute 🙂
merci, j’ai corrigé