Templatefilter allen Templates zur Verfügung stellen
Das kennst du sicher auch. Du hast dir ein paar hübsche Templatefilter geschrieben, die du praktisch in jedem Template brauchst. Ein Markdown-Filter oder Djangos I18N-Tags währen solche Kandidaten. Nun ist es super nervig, diese Templatefilter jedem Template zur Verfügung zu stellen:{% load i18n mymarkdown imagefilter ... %}
Was bei einer Hand voll Templates noch in Ordnung ist, artet im späteren Entwicklungsstadium zu einer Kaffee-vernichtenden {%load%}-Orgie aus. Ganz zu schweigen davon, dass sich der Templatefilter-Name auch ändern könnte.
Django bietet aber eine Möglichkeit, diese Templatetags zu den "globalen" Templatetags hinzuzufügen, sie stehen damit allen Templates sofort zur Verfügung. Füge dazu irgendwo1 deinem Projektcode diesen Block hinzu:
from django.template import add_to_builtins
add_to_builtins('django.templatetags.i18n')
add_to_builtins('my_project.lib.templatetags.mymarkdown')
add_to_builtins('my_project.lib.templatetags.imagefilter')
Danke Jannis für den Tipp.
| [1] | Wenn du keine Applikation mit dem Namen »irgendwo« hast, setze diesen Codeblock in die __init__.py die den entsprechenden templatetags Ordner beinhaltet. |