Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Redirigir a pagina anterior despues del login

Estas en el tema de Redirigir a pagina anterior despues del login en el foro de Python en Foros del Web. Hola cuando trato de entrar a una vista decorada con @login_required me manda mi formulario de login lo cual es correcto. En la barra de ...
  #1 (permalink)  
Antiguo 03/04/2013, 21:26
 
Fecha de Ingreso: julio-2006
Mensajes: 56
Antigüedad: 17 años, 9 meses
Puntos: 0
Redirigir a pagina anterior despues del login

Hola cuando trato de entrar a una vista decorada con @login_required me manda mi formulario de login lo cual es correcto. En la barra de direcciones tengo lo siguiente http://127.0.0.1:8000/login/?next=/test/ lo cual tambien es correcto.

Lo que quiero es que cuando me haga el login me mande a la ruta que tiene el parametro next=/test/

Dato extra: Estoy usando el AuthenticationForm de django.

Alguien sabe como hacerlo?

Saludos

Última edición por rachito; 03/04/2013 a las 21:31 Razón: Agregados nuevos datos
  #2 (permalink)  
Antiguo 03/04/2013, 22:05
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Redirigir a pagina anterior despues del login

En tu vista haz lo siguiente

Código Python:
Ver original
  1. from django.shortcuts import redirect
  2.  
  3. @login_required
  4. def my_view(request):
  5.     url_next = request.GET.get('next', None)
  6.     if url_next is not None:
  7.         return redirect(url_next)
  8.     ... # El resto de vista aqui.

Advertencia: Recuerda satinizar bien url_next ya que podría ser la entrada de algún ataque o simplemente por que no puedes confiar la información que venga del lado del usuario.

Última edición por razpeitia; 03/04/2013 a las 22:41
  #3 (permalink)  
Antiguo 04/04/2013, 20:34
 
Fecha de Ingreso: julio-2006
Mensajes: 56
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Redirigir a pagina anterior despues del login

Combinando el codigo de razpetia con el mio fi vista log_in queda de la siguiente manera por si le sirve a alguien:

Código PHP:
def log_in(request):
    if 
request.user.is_authenticated():
        return 
HttpResponseRedirect('/')

    
url_next request.GET.get('next'None)

    if 
request.method == 'POST':
        
login_form AuthenticationForm(request.POST)
        
url_next request.POST.get('next'None)
        if 
login_form.is_valid:
            
username request.POST['username']
            
password request.POST['password']
            
user authenticate(username=usernamepassword=password)
            if 
user is not None:
                if 
user.is_active:
                    
login(requestuser)
                    if 
url_next is not None:
                        return 
HttpResponseRedirect(url_next)
                    else:
                        return 
HttpResponseRedirect('/')
                else:
                    
pass  # usuario no activado
    
else:
        
login_form AuthenticationForm()

    return 
render_to_response('authentication/login.html', {'next'url_next'login_form'login_form},
                              
context_instance=RequestContext(request)) 

Etiquetas: formulario, login, redirigir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:33.