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.

Comments closed

Sorry, new comments are no longer allowed for this entry.

Write me an email if you have feedback or any questions regarding this post. If you found this post useful and just want to say thank you then don't forget that I have an Amazon Wishlist. :-)


↑ to the elevators

© 2001—2010 Martin Mahner. This is an I ♥ Django Project.

Admin | Generated: Tue, 9 Mar 2010 11:44:53 +0100