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

Resuelto SNandi asked hace 10 meses • 0 respuestas

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.

SNandi avatar Feb 16 '24 18:02 SNandi
Aceptado

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'

Ivan Starostin avatar Feb 16 '2024 11:02 Ivan Starostin