[pyar] [Django][Consulta] Redirigir si el usuario se encuentra logueado

Martin Chikilian slacklinucs en gmail.com
Jue Mayo 22 08:57:22 ART 2014


Claro, creo que lo que él necesita hacer es que si el usuario que vino a su
guest-only view está ya loggeado que lo devuelva al referrer URL.
Calculo que usar el header de referrer está bien en ese caso aunque no
estoy seguro de si es buena práctica, por otro lado no puedo pensar ahora
en otras alternativas.


2014-05-22 5:14 GMT-03:00 Alejandro Santos <listas en alejolp.com>:

> El decorador user_passes_test toma un segundo parametro opcional,
> login_url, que es la url cuando falla el test:
>
>
> https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.decorators.user_passes_test
>
> Para sacar la URL de tu vista actual podés usar reverse:
>
> https://docs.djangoproject.com/en/1.5/ref/urlresolvers/#reverse
>
> Seguramente tengas que usar reverse_lazy, probalo,
>
> https://docs.djangoproject.com/en/1.5/ref/urlresolvers/#reverse-lazy
>
>
>
>
> 2014-05-22 2:34 GMT+02:00 Sebastián Seba <ssebastianj en gmail.com>:
> > El 21 de mayo de 2014, 20:52, Martin Chikilian <slacklinucs en gmail.com>
> > escribió:
> >
> >> Hola!
> >>
> >> Se me ocurre:
> >>
> >> from django.contrib.auth.decorators import user_passes_test
> >>
> >> @user_passes_test(lambda user: not user.is_authenticated())
> >> def my_guests_only_view(request):
> >>     ...
> >>
> >> See
> >>
> https://docs.djangoproject.com/en/1.7/topics/auth/default/#django.contrib.auth.decorators.user_passes_test
> >>
> >>
> >> 2014-05-21 20:14 GMT-03:00 Sebastián Seba <ssebastianj en gmail.com>:
> >>>
> >>> ¡Buenas lista! Recurro a su sabiduría para lo siguiente:
> >>>
> >>> Necesito "algo" que haga lo contrario al decorador @login_required de
> >>> Django, es decir, que al momento de realizar una request hacia una view
> >>> dada, si el usuario ya se encuentra logueado en el sistema, sea
> redirigido a
> >>> la vista desde la cual realizó la request.
> >>>
> >>> ¿Casos de uso? El primero es que si el usuario se dirige a la vista de
> >>> login y ya está logueado, no muestre el form de login y lo redirija.
> Los
> >>> otros casos son vistas que quiero que sean visualizadas sólo por
> usuarios no
> >>> logueados.
> >>>
> >>> ¿Cómo lo harían? ¿ya existe algo para eso? ¿cómo lo harían con un
> >>> decorador?
> >>>
> >>> ¡Saludetes!
> >>>
> >>> _______________________________________________
> >>> pyar mailing list pyar en python.org.ar
> >>> http://listas.python.org.ar/listinfo/pyar
> >>>
> >>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>>
> >>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >>> Argentina - http://www.usla.org.ar
> >>
> >>
> >>
> >> _______________________________________________
> >> pyar mailing list pyar en python.org.ar
> >> http://listas.python.org.ar/listinfo/pyar
> >>
> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>
> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >> Argentina - http://www.usla.org.ar
> >
> >
> > A) ¡Hola Mati! Acabo de probar lo que comentaste y lo que sucede es que
> se
> > produce un bucle infinito de redirecciones hacia la view de login.
> >
> > Ejemplo:
> >
> > 1) Estoy en el home del sitio y hago click en "Iniciar sesión" y me
> redirige
> > hacia la view de Login.
> > 2) Completo con los datos de acceso, los envío y me redirige hacia el
> home
> > nuevamente. (Hasta acá todo bien)
> > 3) Estoy en el home y hago click (por poner un ejemplo) en "Ir a
> contacto".
> > Me redirige a la view de Contacto.
> > 4) La view de Contacto debe ser accedida por usuarios no logueados pero
> en
> > este punto ya estoy logueado, por lo que me redirige nuevamente a la
> view de
> > Login.
> > 5) Se produce un bucle de redirecciones hacia la view Login... Firefox
> llora
> >
> > B) Viendo la documentación que me pasaste una opción hacky que podría
> probar
> > es usar el parámetro "login_url" del decorador @user_passes_test para
> hacer
> > la redirección.
> > Surge otra duda: ¿es correcto usar request.META.get('HTTP_REFERER')? Lo
> que
> > quiero es que lo reenvíe al usuario desde donde vino.
> >
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
>
>
>
> --
> Alejandro Santos
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140522/731565fe/attachment.html>


More information about the pyar mailing list