Django путь не работает, и он направляет меня на неправильные сайты - PullRequest
0 голосов
/ 14 апреля 2020

Я создаю свой первый веб-сайт, и я застрял, потому что пути к сайтам неверны. Например: когда я нажимаю «Поиск» на панели навигации, я хочу go to «/ search» (поиск добавляется как блок в базе. html). Когда я нахожусь в "/ search" и я нажимаю "зарегистрироваться" на панели навигации, я хочу go "/ register" (регистрация также является блоком). Проблема в том, что когда я нажимаю «зарегистрироваться» из «/ search», он направляет меня в «/ search / register», который не существует. Ходить домой работает с любой страницы.

Мои URL-адреса:

from django.contrib import admin

from django.urls import path, include

from users import views as users_views 

from polls import views as polls_views

urlpatterns = [
    #path('', include('polls.urls')), 

    path('', polls_views.home, name='home'),

    path('ListSearch/', polls_views.ListSearch, name='ListSearch'),

    path('register/', users_views.register, name='register'), 

    path('admin/', admin.site.urls),
]

Моя панель навигации:

<nav>
  <div class="nav-wrapper" style="background-color:#174c9c;">
     <div class="container">
        <a href="/" class="brand-logo">ShoppingList</a>
        <ul class="right hide-on-med-and-down">
          <li><a href="ListSearch">Search for list </a></li>
          <li><a href="/">Log in</a></li>
          <li><a href="register">Register</a></li>
        </ul>
      </div>
  </div>
</nav>

Если я изменил вышеупомянутый «регистрация /» на «регистрация» и сделал то же самое с « ListSearch "он дает мне 404: 404 на сайте: (он ищет" register / ", но находит только" register ".

Ответы [ 3 ]

2 голосов
/ 14 апреля 2020

Вы должны добавить теги, а не прямые строки <li><a href="{% url 'register' %}">Register</a></li>

0 голосов
/ 14 апреля 2020

В django шаблонах пути должны указываться с использованием:

<a href = "{% url 'name_of_path' parameter %}">Link</a>

"name_of_path" - это имя, указанное в urls.py. Если для URL требуется какой-либо параметр, он должен быть указан.

0 голосов
/ 14 апреля 2020

Я думаю, что вы просто упускаете лидирующие слова sh в своих URL. Вместо

<li><a href="register">Register</a></li>

используйте

<li><a href="/register">Register</a></li>

(см. Разницу в атрибуте href?)

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