这是一个非常基本的问题,但是我对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”后,我会m重定向到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')
]
我该怎么解决?
not在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>
但是这是原因之一,为什么更好地利用the
{% url … }
template tag [Django-doc]将此标记赋予视图的name,并将其翻译为相应的URL:{% url … }
<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>
或localhost:8000/transfer
这样的绝对路径(不带斜杠)。>>