将request.path与Django模板中的反转url进行比较

hob*_*es3 5 python django django-templates

我明白这request.path会给我当前的URL.

我目前正在base.html使用CSS选项卡处理我的模板,我希望模板知道哪个选项卡当前处于"活动状态"并传递class="active-tab"<a>标记.

所以我想做点什么

<a href="{% url orders_list %}"
    {% if request.path = reverse('orders_list') %}
        class="active-tab"
    {$ endif %}
>Orders</a>
Run Code Online (Sandbox Code Playgroud)

但我相信你不能做那种if比较.我也只想要基本(?)URL忽略任何GET参数.

任何建议或提示也欢迎.提前致谢!

小智 11

基于Josh的答案,您可以使用简单的"if"标签:

{% url 'orders_list' as orders_list_url %}
<a{% if request.path == orders_list_url %} class="active"{% endif %}
  href="{{ orders_list_url }}">Orders</a>
Run Code Online (Sandbox Code Playgroud)


Jos*_*ton 2

您可以使用自定义模板标签

from django import template

register = template.Library()

@register.simple_tag
def active(request, pattern):
    path = request.path
    if path == pattern:
        return 'active'
    return ''
Run Code Online (Sandbox Code Playgroud)

然后在模板中的用法有点像这样:

{% load my_tags %}

{% url orders_list as orders %}
<li class="{% active request orders %}"> 
    <a href="{{ orders }}"> Orders </a> 
</li>
Run Code Online (Sandbox Code Playgroud)

您可以根据需要修改模板标签。