English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redirección de páginas en Django

La redirección de páginas en las aplicaciones web tiene muchos motivos necesarios. Puede que desee redirigir a los usuarios a otra página cuando se produce una acción específica o en caso de errores. Por ejemplo, cuando los usuarios inician sesión en el sitio web, a menudo son redirigidos a su página principal o tablero personal. En Django, la redirección se realiza mediante el método 'redirect'.

En el método "redirect" se necesita como parámetro: el nombre de la vista de la cadena de URL a la que se debe redirigir.

myapp/las vistas hasta ahora se muestran como se sigue −

# Nombre de archivo: example.py
# Derechos de autor: 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha: 2020-08-08
def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    devolver render(request, "hello.html", {"today": today, "days_of_week": daysOfWeek})
 
 def viewArticle(request, articleId):
    """Una vista que muestra un artículo basado en su ID"""
    texto = "Mostrando el artículo Número: %s" %articleId
    devolver HttpResponse(text)
 
 def viewArticles(request, year, month):
    text = "Mostrando artículos de: %s"/%s"%(year, month)
    devolver HttpResponse(text)

Modificaremos hello para redirigir a djangoproject.com y viewArticle para redirigir a nuestro interno/myapp/articles' en myapp/view.py se modificará como se muestra a continuación: 

# Nombre de archivo: example.py
# Derechos de autor: 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha: 2020-08-08
from django.shortcuts import render, redirect
 from django.http import HttpResponse
 import datetime
 # Crear tus vistas aquí.
 def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    devolver redirect("https://www.djangoproject.com)
 
 def viewArticle(request, articleId):
    """Una vista que muestra un artículo basado en su ID"""
    texto = "Mostrando el artículo Número: %s" %articleId
    return redirect(viewArticles, año = "2045", mes = "0"2")
 
 def viewArticles(request, year, month):
    text = "Mostrando artículos de: %s"/%s"%(year, month)
    devolver HttpResponse(text)

En el ejemplo anterior, primero importamos la redirección (redirect) de Django. Para redirigir a la página web oficial de Django, solo necesitamos usar la URL completa como cadena en el método "redirect", en el segundo ejemplo (en la vista viewArticle) usamos el nombre de la vista y sus parámetros como parámetros en el método 'redirect'.

acceso/myapp/hello, se mostrará la siguiente pantalla-

y acceder /myapp/article/42Se mostrará la siguiente pantalla-

También se puede especificar si "redirect" es temporal o permanente, agregando el parámetro permanent = True. El usuario no notará la diferencia, pero estos son detalles que se tienen en cuenta en el ranking de sitios de búsqueda.

Estamos definiendo el parámetro "name" en url.py al mapear URL.

# Nombre de archivo: example.py
# Derechos de autor: 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha: 2020-08-08
url(r'^articles}}/(?P\d{2})/(?P\d{4})/', 'viewArticles', nombre = 'articles'),

Este nombre (este artículo) puede ser utilizado como argumento de la función "redirect", por lo que la redirección de viewArticle puede modificarse -

# Nombre de archivo: example.py
# Derechos de autor: 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha: 2020-08-08
def viewArticle(request, articleId):
    """Una vista que muestra un artículo basado en su ID"""
    texto = "Mostrando el artículo Número: %s" %articleId
    return redirect(viewArticles, año = "2045", mes = "0"2")

Cambiar a -

# Nombre de archivo: example.py
# Derechos de autor: 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha: 2020-08-08
def viewArticle(request, articleId):
    """Una vista que muestra un artículo basado en su ID"""
    texto = "Mostrando el artículo Número: %s" %articleId
    return redirect(articles, año = "2045", mes = "0"2")

Nota - Hay una función que genera URL; se utiliza de la misma manera para redirigir; el método "reverse" (django.core.urlresolvers.reverse). Esta función no devuelve un objeto HttpResponseRedirect, sino que solo contiene la URL y cualquier parámetro传入编译视图的字符串.