繁体   English   中英

Django 中是否有办法根据加载的模板屏蔽导航栏中的链接?

[英]Is there a way in Django to mask link in navbar according to the loaded template?

我想在 Django 中做一件简单的事情,但找不到“Django”的方法,我相信有一个。

假设我有一个简单的导航栏,如下所示:

<ul>
    <li>
        <a href="{% url 'home-index' %}">Home</a>
    </li>
    <li>
        <a href="{% url 'blog-index' %}">Blog</a>
    </li>
</ul>

当我在“博客索引”url 时,我想在导航栏中隐藏这个特定链接。

谢谢你的帮助

您可以检查模板中的request.path

{% if request.path == "your_url" %}
    (dont show button)
{% endif %}

例如,您可以使用 if 语句将样式设置为隐藏。

===== 导航条码 =====

<nav class="navbar navbar-expand-lg bg-dark navbar-dark">
    <div class="container-fluid">
      <a class="navbar-brand" href="#">My Site</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNav">
        <ul class="navbar-nav">
          <li class="nav-item">
            <a class="nav-link active" aria-current="page" {% if request.resolver_match.url_name == 'home' %}style="display: none;"{% endif %} href="{% url 'home' %}">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" {% if request.resolver_match.url_name == 'service' %}style="display: none;"{% endif %} href="{% url 'service' %}">Service</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" {% if request.resolver_match.url_name == 'contactus' %}style="display: none;"{% endif %} href="{% url 'contactus' %}">Contact Us</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" {% if request.resolver_match.url_name == 'aboutus' %}style="display: none;"{% endif %} href="{% url 'aboutus' %}">About Us</a>
          </li>
        </ul>

       
      </div>
    </div>
  </nav>

==== urls.py ====

from django.urls import path
from .views import *
 
urlpatterns = [
    
    path('', HomeView,name='home'),
    path('service/', ServiceView,name='service'),
    path('aboutus/', AboutUsView ,name='aboutus'),
    path('contactus/', ContactUsView,name='contactus'),
   
]

===== Output =====

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM