Django href 在搜索栏中重复 URL

Django href repeats URL in searchbar

这是一个非常基本的问题,但我对 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 并单击 "upload" 按钮时,我被成功重定向到 localhost:8000/transfer/upload,但在那之后例如,当我点击 "home" 时,我被重定向到 localhost:8000/transfer/transfer (如果我点击从上传下载,它是 localhost:8000/transfer/transfer/download ).我已经尝试修改我的 hrefs 以使其不包含 "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')
]

我该怎么做才能解决这个问题?

您是否尝试使用像 localhost:8000/transfertransfer(没有斜线)这样的绝对路径。

如果您在url前加上斜杠,那么这是亲戚url,然后确实将路径附加到当前路径。因此,您可以在 url 前面加上斜杠:

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

但这是 最好使用 {% url … } template tag [Django-doc] 的原因之一,此标签被赋予 name,并将其翻译成相应的 url:

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