【问题标题】:Navbar dropdown menu href links not a working properly (Django+Bootstrap)导航栏下拉菜单 href 链接无法正常工作(Django+Bootstrap)
【发布时间】:2020-06-01 18:55:05
【问题描述】:

我正在使用 Django 和 Bootstrap4 创建一个小型 Web 应用程序。在 Django 的项目文件夹中,我有模板,其中一个是基本模板。其他模板扩展了基本模板。我已将 Bootstrap CDN 添加到基本模板中,并且工作正常。我创建了 Bootstrap Navbar,它在调整为屏幕大小时会出现下拉菜单。

问题是,当我单击导航链接时,它会将其 href 中的路径添加到浏览器中显示的当前路径,即前一个导航链接的位置并搜索该路径。因此它给了我一个错误。单击它时,它应该只采用单击的导航链接的路径。我的代码如下。 href 链接来自我的 urls.py 文件。请告知如何解决此问题。谢谢。

base.html code

【问题讨论】:

  • 欢迎来到 StackOverflow!请将您的代码作为文本而不是屏幕截图添加到您的问题中,另请参阅How do I ask a good question?

标签: django bootstrap-4


【解决方案1】:

这与 Django 无关。问题是您使用的是相对 url,而不是绝对或根相对 url。以下是所有三个的示例:

  • some-page/
    • 这是一个相对 URL。它会带你到你所在的任何页面加上“some-page/”
  • https://example.com/some-page/
    • 这是一个绝对网址。无论您在网站的哪个位置,它都会将您带到确切的网址。
  • /some-page/
    • 这是一个相对于根的 URL。它将带你到你的根域(在这种情况下为https://example.com),加上给定的 url。这是首选选项,因为您不必将其从开发(它将带您到 127.0.0.1:8000/some-page/)更改为生产。

现在,既然您使用的是 Django,您可以做一些更好的事情:使用 Django 的内置 url 模板标签。您可以使用urls.py 文件中给出的每个路径的name 将您的href 修改为这样的:

<a href="{% url 'login' %}">Login</a>
<!-- OR <a href="{% url 'profiles:login' %}">Login</a> if the url is in your profiles/urls.py file -->

这样做是最好的,因为如果以后您想更改确切的 url(例如,更改为 'profile/log-in/'),您只需要在您的 urls.py 文件中这样做,而不是在您定义了旧 url 的任何 HTML 文件。

【讨论】:

  • 嗨,格雷格,感谢您的及时回复。我听从了你的建议。现在它给出了一个错误“第 16 行的无效块标签:''profile:login''。你忘记注册或加载这个标签了吗?”我的 Urls.py 有以下内容: path('profile/login/', LoginView.as_view(template_name='accounts/login.html'), name = 'profile:login'), path('profile/logout/', LogoutView.as_view(template_name='accounts/logout.html'), name = 'profile:logout'), path('register/', views.register, name = 'register'),
  • 再次检查您是否在 html 文件中正确使用了 url 标签。看起来你有一个错误。
【解决方案2】:

在 urls.py 中,为每个 URL 添加一个名称。

     path('profile/login', views.login, name='login')

在模板中添加这个作为 href:

href="{% url 'login' %}"

【讨论】:

  • href='{% url 'login' %}' 应该是 href="{% url 'login' %}"href='{% url "login" %}'
【解决方案3】:

感谢大家的回复。现在可以了。我使用了 href="{% url 'login' %} 并确保名称标签与我的 urls.py 文件条目匹配。

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2020-03-25
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2015-04-24
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多