2012-10-06 30 views
46

Duplicar posibles:
Django: Redirect to previous page after login¿Redirigir/regresar a la misma página (anterior) en Django?

¿Cuáles son las opciones cuando se quiere devolver al usuario a la misma página en Django y cuáles son las ventajas/desventajas de cada uno?

Métodos sé:

  • HTTP_REFERER
  • parámetro GET que contiene la URL anterior
  • datos de sesión para almacenar la URL anterior

¿Hay alguna otra?

+8

El enlace dice "después de inicio de sesión". ¿Le pregunté "después de iniciar sesión"? Esta pregunta puede ser una descripción real de este tema. No merece -1, se merece +1. Jeeez –

+2

por el contrario, la lógica no es diferente de una obtención o publicación, es solo una cuestión de redirección, no hay pro y contra involucrados hasta que usted defina algún razonamiento, su pregunta es amplia y sin una investigación o prueba adecuada. –

+3

Es muy diferente. Se incluyen las redirecciones de inicio de sesión y comentarios de Django. Mi pregunta es para los demás casos;) –

Respuesta

83

Una de las formas es el uso de HTTP_REFERER cabecera como de la siguiente manera:

from django.http import HttpResponseRedirect 

def someview(request): 
    ... 
    return HttpResponseRedirect(request.META.get('HTTP_REFERER')) 

No está seguro de los contras de esto!

+7

Creo que la gran estafa sería el hecho de que muchos usuarios/navegadores tienen el http_referer apagado. –

+3

¿Sabes lo difícil que es desactivar el encabezado? La mayoría de los usuarios no saben qué es, y mucho menos cómo desactivarlo. En Firefox y Chrome tienes que _manualmente editar las preferencias_ (de nuevo, no muchas personas saben cómo hacerlo); en IE no puede deshabilitarlo en absoluto (se desactiva automáticamente para sitios seguros). –

+35

Creo que sería aún mejor redirigir a la página principal del sitio si request.META no está configurado: return HttpResponseRedirect (request.META.get ('HTTP_REFERER', '/')) – nickzam

4

Si bien la pregunta y la respuesta son viejas, creo que faltan algunas opciones. No he encontrado ningún inconveniente con los métodos, me gustaría saber si hay alguno.

Cuestiones relacionadas