1

每次出现模板标签时,我都需要一个唯一标识符。是否可以获得使用模板标签的实际文件名、行号和列?

我曾考虑在上下文中使用变量来计算我的模板标签的实例,但是如果我遇到以下情况,这将导致数字被分配两次:

{% mytemplatetag %}
{% if random %}
    Some Text {% mytemplatetag %}
{% else %}
    Some other Text
{% endif %}
{% mytemplatetag %}

如果 random 为真,则模板标签将获得数字 1,2 和 3。如果 random 为假,则只有第一个和最后一个模板标签会获得一个数字,因此数字的分配方式不同。

在上面的示例中,我只需要 mytemplatetag 的所有实例的唯一 ID。

4

1 回答 1

2

在您的模板标签中,您得到了解析器。您可以使用它来获取源文件和模板中的当前字符,如下所示:

@register.tag
def mytemplatetag(parser, token):
    template_loader, position = parser.command_stack[0][-1]
    print template_loader.loadname, position
于 2012-09-28T14:48:59.717 回答