将标记作为变量用于在Django模板中使用if :: else

时间:2014-06-15 18:59:12

标签: python regex django

我有一个Django模板标签,匹配当前url regexp(如果regexp匹配regexp,我想用它来创建模板中的打印件,在这种情况下,我用它来创建网站菜单中的“active”元素)。

# project/templatetags/tags.py 
@register.simple_tag(takes_context=True)
def match_url(context, match):
    request = context.get('request')

    if not request:
        raise Exception

    return re.match(match, request.get_full_path())

我希望像这样使用它

{% load tags %}

{% if match_url "^/about" %}
    <h1>About page</h1>
{% endif %}

{% if somevar == "asfd" || match_url "^/cat/1" %}
    :param: somevar: variable that I passed from view
{% endif %}

我了解{% with blabla as somethink %}{% match_url blabla as somethink %}。我需要它,如上所示,因为在我的情况下它更方便。

1 个答案:

答案 0 :(得分:1)

制作一个{% if_match_url "^/about" %}...{% endif %}模板标签,以满足您的需求。

模板语言是有意限制的,以确保您不会在模板中添加太多魔力。人们会告诉你在视图中而不是模板中执行此操作。