URL-маршрутизация в Джанго - PullRequest
1 голос
/ 29 мая 2019

Я новичок в URL и Django и получил несколько вопросов.

На данный момент у меня есть 2 HTML-шаблона, которые правильно маршрутизируются: home.html и ladder.html.

Что делатьЯ должен сделать, чтобы перейти от моего ladder.html (ladder /) обратно к моему home.html (""), если я снова нажму на дом, ничего не происходит.И как второй, когда я нахожусь на лестнице и снова нажимаю на лестницу, он добавляет еще одну лестницу / к URL, и я получаю ошибку маршрутизатора, как я могу решить эту проблему?

Спасибо за помощь.

Я покажу код моего navbar, где мои атрибуты href таковы, что вы можете понять, что я имею в виду, и мои urls.py

Мои hrefs:

<div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="">Home<span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="ladder/">Ladders</a>

Мои urls.py:

from django.contrib import admin
from django.urls import path
from pages.views import home_view,ladder_view
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    path('', home_view),
    path('admin/', admin.site.urls),
    path('ladder/',ladder_view),

]

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

Путь для дома /, поэтому вы можете написать это как:

<a class="nav-link" href=<b>"/"</b>>Home<span class="sr-only">(current)</span></a>

Но, как говорится, жесткое кодирование URL-адреса не очень хорошая идея . Вы должны дать своим URL-адресам имя и использовать тег шаблона {% url ... %} [Django-doc] , например:

# app/urls.py

from django.contrib import admin
from django.urls import path
from pages.views import home_view,ladder_view
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    path('', home_view<b>, name='home'</b>),
    path('admin/', admin.site.urls),
    path('ladder/',ladder_view<b>, name='ladder'</b>),
]

В шаблоне вы можете написать это как:

<li class="nav-item active">
    <a class="nav-link" href="<b>{% url 'home' %}</b>">Home<span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
    <a class="nav-link" href="<b>{% url 'ladder' %}</b>">Ladders</a>
</li>

Если позже вы, например, измените path или переместите это представление в другое приложение, то URL-адреса изменятся, поскольку Django «вычисляет» URL-адреса при отображении шаблона. В документации Django есть тема с именем Имена шаблонов URL-адресов [Django-doc] .

0 голосов
/ 29 мая 2019

вы можете использовать тег для вызова любого маршрута. для этого вы должны:

<li class="nav-item active">
    <a class="nav-link" href="{% url 'home' %}">Home<span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
    <a class="nav-link" href="{% url 'ladder' %}">Ladders</a>
</li>

на этом этапе. когда вы устанавливаете имя для маршрута, вы можете вызвать его с помощью:

{% url 'home' %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...