2011-05-22 34 views
11

Estoy tratando de pasar una variable usando la función de redireccionamiento, pero no devuelve ninguna.Pasar una variable en redirección en Django

def one: 
    # define location variable here 
    return redirect(getting_started_info, location=location) 

def getting_started_info(request, location=''): 
    location = location 
    ... 

¿Podría alguien decirme por qué la variable en la redirección no está pasando?

Respuesta

9
return HttpResponseRedirect(reverse('getting_started_info', kwargs={'location': location})) 
+1

¿Debo modificar mi urls.py por el argumento? – tilaprimera

+9

Esta respuesta es literalmente una sola línea de código. Debe esforzarse más para explicar por qué funciona porque esta es una comunidad de personas que buscan aprender, no solo hacer que las cosas funcionen. – IIllIIll

12

Recuerde que redirect() no está haciendo una llamada directa a la vista, en realidad es el envío navegador del cliente un estado de 302 Found (301 Moved Permanently si utiliza permanent=True) con una instrucción para redirigir a una URL diferente. En este caso, esa URL se resuelve en la vista getting_started_info.

Creo que para que esto funcione, debe existir un urlconf que se asigne a getting_started_view y que utilice su argumento posicional location. Es muy probable que esto ocurra a través del named groups.

Desde el Django 1.8 docs entry en redirect():

Los argumentos pueden ser:

  • un modelo: la función del modelo get_absolute_url() serán llamados.
  • Un nombre de vista, posiblemente con argumentos: urlresolvers.reverse se utilizará para la resolución inversa del nombre.
  • Una URL absoluta o relativa, que se utilizará tal cual para la ubicación de redirección.
2

También puede pasar el valor de alguna variable mediante sesiones o cookies.

Cuestiones relacionadas