【问题标题】:Django href repeats URL in searchbarDjango href 在搜索栏中重复 URL
【发布时间】:2020-04-19 21:30:21
【问题描述】:

这是一个非常基本的问题,但我对 django 比较陌生。

我有一个导航栏:

<nav>
        <ul>
            <li> <a href="transfer"> Home </a> </li>
            <li> <a href="transfer/upload"> Upload </a> </li>
            <li> <a href="transfer/download"> Download </a> </li>
          </ul>
    </nav>

因此,例如,当我在 localhost:8000/transfer 并单击“上传”按钮时,我会成功重定向到 localhost:8000/transfer/upload,但之后当我单击“home”时,我'我被重定向到 localhost:8000/transfer/transfer(如果我点击从上传下载,它是 localhost:8000/transfer/transfer/download)。我尝试将我的 href 修改为不包含“transfer/”,但是当我第一次单击按钮时遇到了无效页面。

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('/upload', views.upload, name='upload'),
    path('/download', views.download, name='download')
]

我能做些什么来解决这个问题?

【问题讨论】:

  • 不要通过编辑来删除问题。通过让您提出问题,您可能会帮助其他有类似问题的人。相反,请通过检查其左侧的复选标记将以下答案之一标记为“正确”。

标签: django django-urls


【解决方案1】:

如果你在url前面加上斜线,那么这是一个相对url,然后确实将路径附加到当前路径。因此,您可以在 URL 前加上斜杠:

<nav>
    <ul>
        <li> <a href="/transfer"> Home </a> </li>
        <li> <a href="/transfer/upload"> Upload </a> </li>
        <li> <a href="/transfer/download"> Download </a> </li>
    </ul>
</nav>

但这就是为什么最好使用{% url … } template tag [Django-doc] 的原因之一 这个标签被赋予了视图的名称,并将翻译这个在相应的网址中:

<nav>
    <ul>
        <li> <a href="{% url 'index' %}"> Home </a> </li>
        <li> <a href="{% url 'upload' %}"> Upload </a> </li>
        <li> <a href="{% url 'download' %}"> Download </a> </li>
    </ul>
</nav>

【讨论】:

    【解决方案2】:

    您是否尝试过使用绝对路径,例如 localhost:8000/transfertransfer(不带斜线)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-05
      • 2021-05-28
      • 2021-05-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多