Estoy creando un proyecto django. Sin embargo, me he encontrado con un pequeño inconveniente. Mi urls.py se parece a estoDjango redirigir a la raíz desde una vista
url(r'^login/(?P<nextLoc>)$', 'Home.views.login'),
url(r'^logout/$', 'Home.views.logout'),
Mi views.py en la aplicación principal es la siguiente:
def login(request,nextLoc):
if request.method == "POST":
form = AuthenticationForm(request.POST)
user=auth.authenticate(username=request.POST['username'],password=request.POST['password'])
if user is not None:
if user.is_active:
auth.login(request, user)
return redirect(nextLoc)
else:
error='This account has been disabled by the administrator. Contact the administrator for enabling the said account'
else:
error='The username/password pair is incorrect. Check your credentials and try again.'
else:
if request.user.is_authenticated():
return redirect("/profile/")
form = AuthenticationForm()
error=''
return render_to_response('login.html',{'FORM':form,'ERROR':error},context_instance=RequestContext(request))
def logout(request):
auth.logout(request)
return redirect('/')
Ahora, cuando voy a la página de inicio de sesión, se abre como se esperaba. Después de enviar el formulario, aparece un error que dice que no puede encontrar las URL del módulo. Después de excavar un poco, me di cuenta de que la redirección ("/") en realidad se traduce en http://localhost/login/
en lugar de http://localhost/
. Lo mismo ocurre al cerrar la sesión, es decir, intenta abrir la url http://localhost/logout/
en lugar de http://localhost/
. Básicamente, cuando la página se abre es http://localhost/login
, el redirect('/')
agrega el/al final de la url actual, y listo - Recibo una url que no esperaba - http://localhost/login/
. No puedo hacer que redirija a la raíz del sitio utilizando el redireccionamiento.
por favor me ayude con esto y si es posible también explicar la causa de este comportamiento irracional de Django
¿Usted intentó HttpResponseRedirect? de importación django.http HttpResponseRedirect def cierre de sesión (petición): \t retorno HttpResponseRedirect ("/") –
dónde está el resto de su urls.py? ¿Qué vista corresponde a "/"? – jterrace