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

Alejandro Santos listas en alejolp.com
Jue Mayo 22 05:14:05 ART 2014


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


More information about the pyar mailing list