Saltar al contenido

Django y urls.py: ¿Cómo puedo HttpResponseRedirect a través de una URL con nombre?

Solución:

Necesitas usar el reverse() función 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]))

Dónde args satisface todos los argumentos en la expresión regular de su URL. También puede proporcionar argumentos con nombre pasando un diccionario.

La respuesta correcta desde Django 1.3 en adelante, donde el método de redireccionamiento implícitamente realiza una llamada inversa, 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 que la declaración if sería if request.session.get('user'). has_key está en desuso hoy en día, y .get () devuelve Ninguno (por defecto, modificable al pasar un segundo parámetro). Entonces, 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'))
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *