NoReverseMatch: Обратное соответствие для 'login' не найдено. 'login' не является действительной функцией представления или именем шаблона
Извините, что снова публикую эту проблему.
Я получаю ошибку, несмотря на то, что конфигурационные файлы выглядят правильно с записью 'login'.
В settings.py добавлено
LOGIN_URL = '/login/'
В APP/templates/base.html:
{% if user.is_authenticated %}
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login' %}">Login</a>
{% endif %}
APP/views.py выглядит следующим образом:
from django.http import HttpResponse
from django.template import loader
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
@login_required(login_url='login') # Redirect to the login page if not authenticated
def protected_intro(request):
return render(request, 'intro.html')
APP/urls.py выглядит следующим образом:
from django.urls import path
from django.contrib.auth.views import LoginView
from . import views
app_name = 'APP'
urlpatterns = [
...
path('login/', LoginView.as_view(), name='login'),
]
Все записи относительно 'login' кажутся правильными, но в итоге выдается ошибка "Reverse for 'login' not found. 'login' не является правильной функцией представления или именем шаблона."
Пожалуйста, помогите.
Спасибо!
Я пытался искать решение, но не смог его решить.
app_name = 'APP' делает имена шаблонов url префиксом этого пространства имен. Теперь вам нужно ссылаться на эти url-шаблоны как {% url 'APP:login' %}
или удалить app_name = 'APP'