template - NoReverseMatch while rendering: Invertir para '''' django.contrib.auth.views.login ''''
register and login django (2)
Estoy usando la autenticación de Django, y en la plantilla login.html, la siguiente declaración está generando un error:
{% url ''django.contrib.auth.views.login'' %}
TemplateSyntaxError at / login
Caught NoReverseMatch while rendering: Invertir para '''' django.contrib.auth.views.login '''' con 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'',
...
)
¿Algunas ideas?
A partir de Django 1.10:
A partir de Django 1.10, ya no es posible utilizar la cadena ''django.contrib.auth.views.login''
en url()
o la etiqueta {% url %}
.
En primer lugar, cambie sus patrones de URL para usar el invocable y asígnele 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''),
]
Luego actualice su etiqueta url para usar el mismo nombre:
{% url ''login'' %}
A partir de Django 1.5:
Ya no necesita {% load url from future %}
, solo use la sintaxis entrecomillada ( {% url ''django.contrib.auth.views.login'' %}
) y listo (consulte la publicación Django 1.5 notas ).
A partir de Django 1.3:
Tenga en cuenta que a partir de Django 1.3 (como señala Karen Tracey a below ), la forma correcta de corregir esto es agregar:
{% load url from future %}
en la parte superior de tu plantilla, y luego usa:
{% url ''django.contrib.auth.views.login'' %}
Antes de Django 1.3:
A juzgar por ese mensaje de error (fíjese en las dobles comillas simples alrededor de la ruta a la vista), supongo que la etiqueta {% url ... %}
no desea las comillas, intente:
{% url django.contrib.auth.views.login %}
La sintaxis con comillas es nueva en Django 1.3. La forma correcta de corregir el error en 1.3 adelante sería incluir {% load url from future%} en la plantilla.