2010-02-14 18 views
10

voy a mi página web http://localhost:8000/listings/post/, falla la prueba¿La redirección de inicio de sesión de Django no funciona?

@user_passes_test(lambda u: u.is_authenticated() and u.get_profile().shipper) 

como se esperaba, y me vuelve a dirigir a http://localhost:8000/login/?next=/listings/post/ como se supone, pero al iniciar sesión de nuevo, no me vuelven a dirigir de nuevo a esa página como se supone que debe. Me lleva a /accounts/profile/. No he definido redirect_field_name en ninguna parte, por lo que debería buscar la variable predeterminada next. El urls.py poco relevante se parece a esto

url(r'^login/$', 'django.contrib.auth.views.login', name='login'), 

¿Cuáles son las posibles causas de esto?

Respuesta

15

necesario para añadir

<input type="hidden" name="next" value="{{ next }}" /> 

Para mi formulario de acceso. Fue la publicación de nuevo a la URL de inicio de sesión sin el token next, y luego tratando de redirigir.

+1

Así que estaba justo al final, su siguiente valor no estaba establecido, es por eso que lo redirigió a LOGIN_REDIRECT_URL. – stefanw

+2

Bueno ... está bien, está bien. Puedes tener el cheque entonces. Pensé que estaba configurado porque estaba apareciendo en la URL. Pero todavía no resolvió realmente el problema;) – mpen

+0

¿A qué formulario necesita agregar esto? –

4

Lo redirige a la variable de configuración LOGIN_REDIRECT_URL.

Esto sucede cuando se cumple lo siguiente:

if not redirect_to or '//' in redirect_to or ' ' in redirect_to: 
       redirect_to = settings.LOGIN_REDIRECT_URL 

Lo más probable es que su 'siguiente' variable está vacía o contiene la basura.

+1

Uh .... no. Como dije, me enviaron a 'http: // localhost: 8000/login /? Next =/listings/post /'. 'next' contiene el valor adecuado. – mpen

Cuestiones relacionadas