working with parametros not name httpresponseredirect con python django redirect django-urls

python - with - redirect con parametros django



Django y urls.py: ¿Cómo respondo HttpResponseRedirect a través de una url con nombre? (4)

Estoy escribiendo una aplicación web basada en miembros, y necesito poder redirigir la página después de iniciar sesión. Quiero usar la url con nombre de mi script urls.py en mi archivo views.py para la aplicación de inicio de sesión, pero no puedo entender qué hacer. Lo que tengo es esto:

def login(request): if request.session.has_key(''user''): if request.session[''user''] is not None: return HttpResponseRedirect(''/path/to/page.html'')

Lo que quiero lograr es algo así como:

def login(request): if request.session.has_key(''user''): if request.session[''user''] is not None: return HttpResponseRedirect url pageName

Obtengo errores de sintaxis cuando ejecuto esto, alguna idea?


Una forma más concisa de escribir que if statement sería if request.session.get(''user'') . has_key está en desuso hoy en día, y .get () devuelve None (por defecto, se puede cambiar pasando un segundo parámetro). Así que combina esto con la respuesta de Soviut:

from django.core.urlresolvers import reverse def login(request): if request.session.get(''user''): return HttpResponseRedirect(reverse(''my-named-url''))



La respuesta correcta de Django 1.3 en adelante , donde el método de redirección realiza una llamada inversa implícitamente, es:

from django.shortcuts import redirect def login(request): if request.session.get(''user''): return redirect(''named_url'')


Necesitas usar la función reverse() utils.

from django.core.urlresolvers import reverse def myview(request): return HttpResponseRedirect(reverse(''arch-summary'', args=[1945]))

Donde args satisface todos los argumentos en la expresión regular de tu url. También puede suministrar args con nombre pasando un diccionario.