Rob*_*bin 3 navigation django django-templates django-views
我正在使用django构建一个网站,每个页面顶部都有一个标题,基本上是一个带有几个链接的菜单,在整个页面中保持不变.
但是,根据您所在的页面,我想通过添加"活动"类来突出显示菜单上的相应链接.为此,我目前正在执行以下操作:每个页面都有一个完整的菜单块,它集成在一般布局中,不包含菜单.例如,page2看起来像这样:
{% extends "layout.html" %}
{% block menu %}
<li><a href="{% url 'myapp:index' %}">Home</a></li>
<li><a href="{% url 'myapp:page1' %}">page1</a></li>
<li class="active"><a href="{% url 'myapp:page2' %}">page2</a></li>
<li><a href="{% url 'myapp:page3' %}">page3</a></li>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
问题是,除了那个解决方案不那么漂亮之外,每次我想要添加一个链接到标题菜单时,我必须修改我拥有的每一个页面.由于这远非最佳,我想知道你们中是否有人会知道更好的方法.
提前致谢!
您可以创建自定义模板标签:
from django import template
from django.core.urlresolvers import reverse, NoReverseMatch, resolve
register = template.Library()
@register.simple_tag
def active(request, view_name):
url = resolve(request.path)
if url.view_name == view_name:
return 'active'
try:
uri = reverse(view_name)
except NoReverseMatch:
uri = view_name
if request.path.startswith(uri):
return 'active'
return ''
Run Code Online (Sandbox Code Playgroud)
并在模板中使用它来识别URL加载的页面
<li class="{% active request 'car_edit' %}"><a href="{% url 'car_edit' car.pk %}">Edit</a></li>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |