Django href повторяет URL в строке поиска - PullRequest
1 голос
/ 20 апреля 2020

Это действительно базовый c вопрос, но я относительно новичок в 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>

Так, например, когда я нахожусь на своем локальном хосте: 8000 / Transfer и нажимаю кнопку «Загрузить», я успешно перенаправлен на localhost: 8000 / Transfer / Upload, но после того, как, например, когда я нажимаю «домой», я перенаправляюсь на localhost: 8000 / Transfer / Transfer (если я нажимаю скачать из загрузки, это локальный: 8000 / Transfer / Transfer / Download). Я попытался изменить мои hrefs, чтобы они не включали «перевод /», но затем я сталкиваюсь с неверной страницей при первом нажатии кнопки.

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')
]

Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Если вы делаете , а не , добавляете URL-адреса с sla * sh, то это относительный URL-адрес , и тогда путь действительно добавляется к текущему пути. Таким образом, вы можете добавить к URL URL-адрес: sh:

<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 &hellip; } шаблон тега [Django -doc] этому тегу присваивается имя представления, и он будет переведен в соответствующий 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>
1 голос
/ 20 апреля 2020

Вы пытались использовать абсолютный путь как localhost:8000/transfer или как transfer (без sla sh).

...