首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django动态获取视图url并检查它是否是当前页面

Django动态获取视图url并检查它是否是当前页面
EN

Stack Overflow用户
提问于 2014-02-27 00:24:33
回答 3查看 19.8K关注 0票数 25

考虑一下这个基本菜单:

代码语言:javascript
运行
复制
<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>标记中使用这样的逻辑:

代码语言:javascript
运行
复制
{% if request.get_full_path = "{% url 'home' %}" %}class="active"{% endif %}
{% if request.get_full_path = "{% url 'about' %}" %}class="active"{% endif %}

但很明显,我不能让两个{% ... %}相互嵌套。

有没有关于如何解决这两个嵌套的想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-27 00:53:28

我通常在导航中使用模板继承,与answer alecxe linked to类似。但是,可以比较if标记中的use the current URL,正如您正在尝试做的那样。

url标记允许您将结果保存到变量中。然后,您可以在if标记中使用该变量。

代码语言:javascript
运行
复制
{% url 'home' as home_url %}
<a href="{{ home_url }}" {% if request.get_full_path == home_url %}class="active"{% endif %}>Home</a>
票数 49
EN

Stack Overflow用户

发布于 2021-09-27 21:08:37

非常老的线程!我的答案可能会对未来的读者有所帮助。我是这样做的(只需将请求URL名称与您的路径名进行比较)

代码语言:javascript
运行
复制
<a class="nav-link {% if request.resolver_match.url_name == 'index' %}active{% endif %}" href="#">Home</a>
票数 4
EN

Stack Overflow用户

发布于 2021-10-08 16:19:11

如果你的应用程序有一个namespace (比方说blog),那么:

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
app_name = 'blog'
urlpatterns = [
    path('', views.post_list, name='post_list'),
    # ...
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22047251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档