Looking for django Keywords? Try Ask4Keywords

Django Proste tagi


Przykład

Najprostszym sposobem zdefiniowania niestandardowego znacznika szablonu jest użycie tagu simple_tag . Są bardzo proste w konfiguracji. Nazwa funkcji będzie nazwą znacznika (choć można ją zastąpić), a argumentami będą tokeny („słowa” oddzielone spacjami, z wyjątkiem spacji zawartych w cudzysłowach). Obsługuje nawet argumenty słów kluczowych.

Oto bezużyteczny tag, który zilustruje nasz przykład:

{% useless 3 foo 'hello world' foo=True bar=baz.hello|capfirst %}

Niech foo i baz będą zmiennymi kontekstowymi, takimi jak:

{'foo': "HELLO", 'baz': {'hello': "world"}}

Powiedzmy, że chcemy, aby ten bardzo bezużyteczny tag wyświetlał się tak:

HELLO;hello world;bar:World;foo:True<br/>
HELLO;hello world;bar:World;foo:True<br/>
HELLO;hello world;bar:World;foo:True<br/>

Rodzaj konkatenacji argumentów powtórzono 3 razy (3 to pierwszy argument).

Oto jak może wyglądać implementacja tagu:

from django.utils.html import format_html_join

@register.simple_tag
def useless(repeat, *args, **kwargs):
    output = ';'.join(args + ['{}:{}'.format(*item) for item in kwargs.items()])
    outputs = [output] * repeat
    return format_html_join('\n', '{}<br/>', ((e,) for e in outputs))

format_html_join pozwala oznaczyć <br/> jako bezpieczny HTML, ale nie zawartość outputs .