python - Django NoReverseMatch
python-2.7 django-1.6 (1)
Estoy haciendo una aplicación de inicio de sesión simple en django 1.6 (y python 2.7) y me sale un error al principio que no me permite continuar.
Este es el sitio url.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
import login
admin.autodiscover()
urlpatterns = patterns('''',
url(r''^$'', include(''login.urls'', namespace=''login'')),
url(r''^admin/'', include(admin.site.urls)),
)
Y esto es login / urls.py:
from django.conf.urls import patterns, url
from login import views
urlpatterns = patterns('''',
url(r''^$'', views.index, name=''index''),
url(r''^auth/'', views.auth, name=''auth''),
)
Esto es login / views, py
from django.shortcuts import render
from django.contrib.auth import authenticate
def auth(request):
user = authenticate(username=request.POST[''username''], password=request.POST[''password''])
if user is not None:
# the password verified for the user
if user.is_active:
msg = "User is valid, active and authenticated"
else:
msg = "The password is valid, but the account has been disabled!"
else:
# the authentication system was unable to verify the username and password
msg = "The username and password were incorrect."
return render(request, ''login/authenticate.html'', {''MESSAGE'': msg})
def index(request):
return render(request, ''login/login_form.html'')
Tengo un formulario que tiene esto como acción:
{% url ''login:auth'' %}
Y ahí es donde está el problema, cuando intento cargar la página, obtengo:
Reverse for ''auth'' with arguments ''()'' and keyword arguments ''{}'' not found. 1 pattern(s) tried: [u''$auth/'']
Pero si configuro el patrón de URL
url(r'''', views.auth, name=''auth'')
funciona bien, solo establece la acción como ''/''.
He estado buscando una respuesta y no entiendo por qué no funciona.
Traté de cambiar el patrón de URL de inicio de sesión a url (r ''^ login / $'', include (''login.urls'', namespace = ''login'')), y no cambió nada.
El problema está en la forma en que incluye las URL de autenticación en la principal. Como usa ^ y $, solo la cadena vacía coincide. Suelta los $.