Пользовательский шаблонный тег Django с аргументом переменной контекста - PullRequest
6 голосов
/ 18 мая 2011

У меня есть пользовательский тег шаблона, который показывает календарь. Я хочу заполнить определенные элементы в календаре на основе динамического значения.

Вот тег:

@register.inclusion_tag("website/_calendar.html")
def calendar_table(post):
     post=int(post)
     imp=IMP.objects.filter(post__pk=post)
     if imp:
         ...do stuff

В моем шаблоне он отлично работает, когда я передаю жестко закодированное значение, например

    {% load inclusion_tags %}

    {% calendar_table "6" %}

Однако когда я пытаюсь что-то вроде {% calendar_table "{{post.id}}"%}, возникает ошибка ValueError для попытки int (). Как я могу обойти это?

1 Ответ

9 голосов
/ 18 мая 2011

Вы хотите {% calendar_table post.id %}; лишние {{ и }} - вот что вызывает у вас изжогу.

Обратите внимание, что в вашем пользовательском теге вам нужно взять передаваемую строку ("post.id") и сопоставить ее с контекстом, используя Variable.resolve. Есть больше информации об этом в Django документах; в частности, смотрите здесь: http://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#passing-template-variables-to-the-tag

...