我创建了一个模板标签,用于对每个菜单项返回active或不返回任何内容,如果我对每个url进行硬编码,它将起作用,如下所示:

 <li class="{% active request '^/danmark/$' %}"><a href="/danmark/"> Hele Danmark</a>


但是,如果我使用动态网址,则如果网址为^/danmark/{{a.area}}/$,则不会在菜单项中添加任何活动类,例如:

 {% for a in all_areas %}
        <li class="{% active request '^/danmark/{{a.area}}/$' %} "><a href= "/danmark/{{a.area}}/">{{a.area}} </a></li>
    {% endfor %}


和模板标签:

从Django导入模板
注册= template.Library()

@register.simple_tag
def active(request, pattern):
   import re
   if re.search(pattern, request.path):
      return 'active'
   return ''


我在这里可以做什么?

最佳答案

你可以试试这个

{% with request.resolver_match.url_name as url_name %}
<ul id="menu">
    <li class="{% if url_name == 'home' %}active{% endif %}">Home</li>
    <li class="{% if url_name == 'about' %}active{% endif %}">About</li>
    <li class="{% if url_name == 'employer' %}active{% endif %}">Employer</li>
</ul>
 {% endwith %}


您的网址在哪里

url(r'$','home_view', name='home'),
url(r'about/$','about_view', name='about'),
url(r'employer/$','employer_view', name='employer')

关于python - 动态事件菜单项Django,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22249446/

10-12 07:35