Pregunta

Estoy escribiendo una aplicación web para miembros, y necesito poder redirigir la página después de iniciar sesión. Quiero usar la url nombrada de mi script urls.py en mi archivo views.py para la aplicación de inicio de sesión, pero no puedo, por mi vida, averiguar 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 como:

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

Recibo errores de sintaxis cuando ejecuto esto, ¿alguna idea?

¿Fue útil?

Solución

Debe usar < código> reverse () función de utils.

from django.urls import reverse
# or Django < 2.0 : 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 su url. También puede proporcionar argumentos con nombre pasando un diccionario.

Otros consejos

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')

Una forma más concisa de escribir eso si la declaración sería si request.session.get ('usuario') . has_key está en desuso hoy en día, y .get () devuelve Ninguno (de forma predeterminada, se puede cambiar al pasar un segundo parámetro). Así que combinando 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'))
from django.core.urlresolvers import reverse
from django.shortcuts import redirect

def login(request):
    if request.session.get('user'):
        return redirect(reverse('name-of-url'))

También vea https: // docs .djangoproject.com / es / dev / topics / http / urls / # reverse-resolution-of-urls

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top