簡單的標籤

定義自定義模板標記的最簡單方法是使用 simple_tag。這些設定非常簡單。函式名稱將是標記名稱(儘管你可以覆蓋它),引數將是標記(單詞由空格分隔,除了引號之間的空格除外)。它甚至支援關鍵字引數。

這是一個無用的標籤,將說明我們的例子:

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

foobaz 成為上下文變數,如下所示:

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

假設我們希望這個無用的標記像這樣渲染:

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

一種引數連線重複 3 次(3 是第一個引數)。

以下是標記實現的外觀:

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 允許將 <br/> 標記為安全的 HTML,但不是 outputs 的內容。