NoReverseMatch: No se encontró el reverso para 'iniciar sesión'. 'iniciar sesión' no es una función de vista válida o un nombre de patrón
Lamento publicar este problema una vez más.
Recibo el error a pesar de que los archivos de configuración parecen correctos con la entrada "iniciar sesión".
En settings.py agregado
LOGIN_URL = '/login/'
En la aplicación/templates/base.html:
{% if user.is_authenticated %}
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login' %}">Login</a>
{% endif %}
El APP/views.py tiene el siguiente aspecto:
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')
El APP/urls.py se ve así:
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'),
]
Todas las entradas relacionadas con el 'iniciar sesión' parecen correctas, pero terminan con el error "No se encontró el reverso para 'iniciar sesión'. 'iniciar sesión' no es una función de vista válida o un nombre de patrón".
Por favor ayuda.
¡Gracias!
Intenté buscar la solución, pero no pude resolverla.
app_name = 'APP'
hace que los nombres de sus patrones de URL tengan el prefijo de este espacio de nombres. Ahora necesitas referirte a esos patrones de URL como{% url 'APP:login' %}
o eliminarapp_name = 'APP'