考虑一下这个基本菜单:
<ul class="nav navbar-nav">
<li class="active"><a href="{% url 'home' %}">Home</a></li>
<li><a href="{% url 'about' %}">About</a></li>
</ul>我试图给当前页面的链接一个活动的类,并且我想根据当前的url和视图的url动态地做这件事。因此,当用户访问about页面时,该页面现在具有活动类,而主页没有。
我想在<li></li>标记中使用这样的逻辑:
{% if request.get_full_path = "{% url 'home' %}" %}class="active"{% endif %}
{% if request.get_full_path = "{% url 'about' %}" %}class="active"{% endif %}但很明显,我不能让两个{% ... %}相互嵌套。
有没有关于如何解决这两个嵌套的想法?
发布于 2014-02-27 00:53:28
我通常在导航中使用模板继承,与answer alecxe linked to类似。但是,可以比较if标记中的use the current URL,正如您正在尝试做的那样。
url标记允许您将结果保存到变量中。然后,您可以在if标记中使用该变量。
{% url 'home' as home_url %}
<a href="{{ home_url }}" {% if request.get_full_path == home_url %}class="active"{% endif %}>Home</a>发布于 2021-09-27 21:08:37
非常老的线程!我的答案可能会对未来的读者有所帮助。我是这样做的(只需将请求URL名称与您的路径名进行比较)
<a class="nav-link {% if request.resolver_match.url_name == 'index' %}active{% endif %}" href="#">Home</a>发布于 2021-10-08 16:19:11
如果你的应用程序有一个namespace (比方说blog),那么:
<li class="nav-item">
<a
class="nav-link{% if request.resolver_match.namespace == 'blog' and request.resolver_match.url_name == 'post_list' %} active{% endif %}"
href="{% url 'blog:post_list' %}">
Blog
</a>
</li>记住在blog/urls.py中定义app_name
app_name = 'blog'
urlpatterns = [
path('', views.post_list, name='post_list'),
# ...
]https://stackoverflow.com/questions/22047251
复制相似问题