Пространство имен не решено 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"),