动态活动菜单项 Django

Posted

技术标签:

【中文标题】动态活动菜单项 Django【英文标题】:Dynamic active menu items 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 【参考方案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')

【讨论】:

以上是关于动态活动菜单项 Django的主要内容,如果未能解决你的问题,请参考以下文章

Drupal:如何动态设置活动菜单项

如何进行活动菜单文本颜色更改导航下拉项子菜单? [复制]

Android - 导航抽屉 - 与动态菜单项重叠的片段

通过活动父菜单项获取正文类

如何使用 `renderUI` 响应式更新 Shiny 应用程序中的活动菜单项?

Cufon - 悬停效果和活动菜单项的问题