vincent template register page has custom contrib auth attribute and django authentication django-authentication django-login

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.