动态活动菜单项 Django
我创建了一个模板标签,用来给每个菜单项返回“激活”状态或者什么都不返回。如果我把每个网址写死,它就能正常工作,比如这里:
<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 %}
还有模板标签的代码:
from django import template
register = template.Library()
@register.simple_tag
def active(request, pattern):
import re
if re.search(pattern, request.path):
return 'active'
return ''
那我该怎么做呢?
2 个回答
0
为什么不在你的视图里放一些信号呢,比如:
active = 'danmark'
然后在模板里你可以这样做:
<li{% if active=='danmark' %} class="active"{% endif %}><a href="/danmark/"> Hele Danmark</a></li>
6
你可以试试这个
{% 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')