【问题标题】:Dynamic active menu items Django动态活动菜单项 Django
【发布时间】:2014-04-10 13:29:42
【问题描述】:

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

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

但如果我使用动态 url,则不会向任何菜单项添加任何活动类,如果 url 是 ^/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 导入模板 注册=模板.库()

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

我可以在这里做什么?

【问题讨论】:

  • 你的班级也依赖地区?如果不是,那么您将您的班级设置为class="{% active request '^/danmark/$' %} "
  • 是的,这也取决于地区。
  • 能否展示模板标签功能?
  • 只需添加我的模板标签,当我硬编码 url 时它工作正常。
  • 使用活动链接。开箱即用。 github.com/j4mie/django-activelink

标签: python django django-templates


【解决方案1】:

为什么不在您的视图中添加一些信号,例如:

active = 'danmark'

然后在模板中你可以这样做:

<li{% if active=='danmark' %} class="active"{% endif %}><a href="/danmark/"> Hele Danmark</a></li>

【讨论】:

    【解决方案2】:

    你可以试试这个

    {% 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2013-07-26
      相关资源
      最近更新 更多