3 февр. 2010 г.

Сказ о том как загрузить templatetag один раз, не повторяя в наследуемых шаблонах и их кусках.

В твитере все исчирикались ссылкой http://zeroandone.posterous.com/top-10-tips-to-a-new-django-developer.

Я же к ней, как и ко многим подобным вводным статьям, относился прохладно. Но все же посмотрел. Новыми для меня стали следующие пункты: “6.Load template tags  belonging to third party apps  only once” и permalink, который я никак не мог начать использовать.

Итак, чтобы импортировать шаблонные тэги аппликации/приложения всего один раз, без необходимости повторять {% load %} в каждом наследуемом и “инклюженом” ({% include %}) шаблоне, нужно написать


from django import template

template.add_to_builtins('project.app.templatetags.custom_tag_module')


Данный кусок можно вставлять в settings или в файлы моделей, т.к. автор утверждает, что эти файлы загружаются в любом случае…

С permalink следующая ситуация: в models, в get_absolute_url класса модели можно использовать декоратор @models.permalink, который видимо использует reverse.


@models.permalink

def get_absolute_url(self):

    return ('profileurl2',(),{'userid'self.user.id})


PS. Кстати, в твитере все чирикаю. А как будет называться повторение чужого “чирика”? Перечирикивание?




2 комментария:

Alexander Dinu комментирует...

кстати, jinja2 не пробовали?

Ivan Markeev комментирует...

Пока нет, но я впечатлен тестами производительности...
Надо будет попробовать как-нибудь.