获取templatetag位置

时间:2012-09-28 12:02:53

标签: django django-templates

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

我考虑过在上下文中使用一个变量来计算我的templatetag的实例,但如果我遇到以下情况,这会导致数字被分配两次:

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

如果random为true,则templatetags将获得数字1,2和3.如果random为false,则只有第一个和最后一个templatetag获得一个数字,因此数字的分配方式不同。

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

1 个答案:

答案 0 :(得分:2)

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

@register.tag
def mytemplatetag(parser, token):
    template_loader, position = parser.command_stack[0][-1]
    print template_loader.loadname, position