gpt4 book ai didi

django - 在 Django 模板中分解标题菜单

转载 作者:行者123 更新时间:2023-12-01 08:32:36 24 4
gpt4 key购买 nike

我正在使用 django 构建一个网站,每个页面顶部都有一个标题,这基本上是一个带有几个链接的菜单,在整个页面中保持不变。

但是,根据您所在的页面,我想通过添加“事件”类来突出显示菜单上的相应链接。为此,我目前正在执行以下操作:每个页面都有一个完整的菜单 block ,该 block 集成在不包含菜单的一般布局中。例如,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 %}

问题在于,除了那个解决方案不太漂亮之外,每次我想向标题菜单添加链接时,我都必须修改我拥有的每一页。由于这远非最佳,我想知道你们中是否有人知道这样做的更好方法。

提前致谢!

最佳答案

您可以创建自定义模板标签:

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 ''

并在模板中使用它来识别哪个页面是通过URL加载的

<li class="{% active request 'car_edit' %}"><a href="{% url 'car_edit' car.pk %}">Edit</a></li>

关于django - 在 Django 模板中分解标题菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16610054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com