Пространство имен не решено NoReverseMatch: Обратное соответствие для 'login' не найдено. 'login' не является действительной функцией представления или именем шаблона

У меня возникла эта ошибка, и я не знаю точно ее источник, является ли это ошибкой в урлах приложений или в урлах проектов. Точная ошибка выглядит так: "NoReverseMatch: Reverse for 'login' not found. 'login' не является действительной функцией представления или именем шаблона." Код, в котором заключается проблема:

<li class="nav-item">
  {% if not user.is_authenticated %}
    <a class="nav-link" href="{% url 'login' %}">Login</a>
  {% else %}
    <a class="nav-link" href="{% url 'logout' %}">Logout</a>`
  {% endif %}
</li>

Вот мои урлы: from django.contrib import admin from django.urls import path, include from . import views from django.contrib.auth import views as auth_views from .forms import *

urlpatterns = [
    path('', views.index, name="index"),
    path('admin/', admin.site.urls),
    path('register/', views.UserSignupView.as_view(), name="register"),
    path('login/', auth_views.LoginView.as_view(template_name="login.html", authentication_form=UserLoginForm)),
    path('logout/', views.logout_user, name="logout"),
]

А урлы моих проектов:

from django.contrib import admin from django.urls import path, include

urlpatterns = [
    path('', include('templates.urls')),
    path('admin/', admin.site.urls),
]

Отступление, я пробовал добавлять пространство имен, но это вызывает другую проблему, поэтому я хотел узнать, есть ли еще какие-либо проблемы с кодом.

Я пытался выяснить, не кроется ли проблема в урлах проекта, но безуспешно. Я пытался выяснить, не проблема ли это с формой, но форма не имеет проблем.

Вам нужно правильно назвать URL, например:

urlpatterns = [
    path('', views.index, name='index'),
    path('admin/', admin.site.urls),
    path('register/', views.UserSignupView.as_view(), name='register'),
    path(
        'login/',
        auth_views.LoginView.as_view(
            template_name='login.html', authentication_form=UserLoginForm
        ),
        name='login',
    ),
    path('logout/', views.logout_user, name='logout'),
]

Вы не написали имя для url "login". Вы должны добавить name="login" в конец пути.

path('login/', auth_views.LoginView.as_view(template_name="login.html", authentication_form=UserLoginForm), name="login"),
Вернуться на верх