2009-09-26 3 views
-5

Как использовать templatetag приложения django?django templatetag?

+0

Вы хотите использовать существующий templatetag, который уже сделал? Или вы хотите создать свой собственный? – Fragsworth

ответ

10

Создание нового тега шаблона может быть весьма существенным в зависимости от того, что он делает, и является ли он блочным тегом (с началом и концом - например, {% if %} {% endif %} и т. Д.). В принципе, вам нужно создать example.templatetags (где example - это ваше приложение), которое реализует ваш тег, а затем {% load example %} в ваших шаблонах, чтобы они могли «видеть» ваши теги и фильтры вашего шаблона.

Например, если вы хотите создать тег {% foobarbaz %}, который выдает либо «foor», либо «bar» или «baz» (если задан как arg) или «» (когда что-либо еще дается) при использовании в шаблон, ваш example/templatetags.py мощь выглядит следующим образом:

from django import template 
register = template.Library() 

@register.simple_tag 
def foobarbaz(input): 
    if "foo" == input: 
     return "foo" 
    if "bar" == input: 
     return "bar" 
    if "baz" == input: 
     return "baz" 
    return "" 

в шаблонах, вы могли бы сделать что-то вроде этого (напомним, что выше модуль является частью example приложения):

{% load example %} 
{% foobarbaz "bar" %} 
{% foobarbaz "elephant" %} 
{% foobarbaz "foo" %} 

Какой бы выход:

bar 

foo 

Обратите внимания, что, как я использую simple_tag, у меня есть только рудиментарный контроль над разбором аргументов, нет никакого способа, чтобы сделать конечный тег и т.д.

Смотрите documentation on custom template filters and tags для получения дополнительной информации.

Смежные вопросы