NoReverseMatch mientras que la prestación: inversa para '' django.contrib.auth.views.login ''
-
14-10-2019 - |
Pregunta
Estoy usando la autenticación de Django, y en la plantilla login.html, la siguiente declaración se genera un error:
{% url 'django.contrib.auth.views.login' %}
TemplateSyntaxError en / login
Atrapados NoReverseMatch mientras que la prestación:. Inversa de '' django.contrib.auth.views.login '' con los argumentos '()' y argumentos de palabra clave '{}' no encontrados
Esta URL se define en mi urls.py:
(r'^login$', 'django.contrib.auth.views.login')
He instalado el sistema de autenticación:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
¿Alguna idea?
Solución
Como de Django 1.10:
A partir de Django 1.10, ya no es posible utilizar el 'django.contrib.auth.views.login'
cadena en url()
o la etiqueta {% url %}
.
En primer lugar, cambiar sus patrones de URL a utilizar el exigible, y el nombre del patrón de URL. Por ejemplo:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
A continuación, actualice su etiqueta url para utilizar el mismo nombre:
{% url 'login' %}
Como de Django 1.5:
Usted no necesita {% load url from future %}
más, sólo tiene que utilizar la sintaxis citado ({% url 'django.contrib.auth.views.login' %}
) y ya está (ver el Django 1,5 notas de la versión ).
Como de Django 1.3:
Tenga en cuenta que como de Django 1.3 (como puntos de Karen Tracey fuera debajo ), la forma correcta de solucionar este problema es añadir:
{% load url from future %}
en la parte superior de la plantilla y, a continuación, utilizar:
{% url 'django.contrib.auth.views.login' %}
Antes de Django 1.3:
A juzgar por ese mensaje de error (tenga en cuenta las dobles comillas simples alrededor de la trayectoria a la vista), supongo que la {% url ... %} tag> no quiere cotizaciones, tratar:
{% url django.contrib.auth.views.login %}
Otros consejos
La sintaxis con citas es nuevo en Django 1.3. La forma correcta para corregir el error de 1.3 avanzar sería incldue {% url carga de futuro%} en la plantilla.