Redirecciones en Django

Las redirecciones en Django son el mecanismo que tenemos para enviar de una página a otra que tengamos configurada en nuestra app en Django; las redirecciones no son más que el comportaiento de enviar a un cliente o usuario a otra página, ya sea de nuestra aplicación o de otra aplicación; para el seo, usaulmente se usa el código de 302 para hacer este tipo de operaciones; un ejemplo comun de redirecciones es cuando tenemos un post o publicación en la cual, cambiamos el título y con esto el slug pero no queremos perder el posicionamiento de post original, en estos casos, podemos hacer una redirección de tipo 302 al nuevo enlace.

 

Las redirecciones son un comportamiento común que cuando -por ejemplo- mandamos una petición para crear un registro, esta función puede que no tenga asociada un template, por el propósito de la misma; por lo tanto lo que hacemos son redirecciones:

  1. Si la data es correcta, hacemos una redirección al listado, formulario de creación o actualización.
    Si la data tiene problemas con las validaciones lo mandamos a la página de creación

Así que, para las siguientes rutas:

app_name="gestion"
urlpatterns = [
   path('',views.index, name="index"),
   path('detail/<int:pk>',views.show, name="show"),
   path('create',views.create, name="create"),
   path('update/<int:pk>',views.update, name="update"),
   path('delete/<int:pk>',views.delete, name="delete")
]

Y si queremos hacer una redirección:

return redirect('gestion:index')

Redireccionamos indicando el nombre de la app, seguido de dos puntos, seguido del nombre de la ruta.

Funcion de creacion de ejemplo:

def create(request):
   form = ProductForm()
   if request.method == "POST":
       form = ProductForm(request.POST)
       if form.is_valid():
           product = Product()
           product.title = form.cleaned_data['title']
           product.price = form.cleaned_data['price']
           product.description = form.cleaned_data['description']
           product.category = form.cleaned_data['category']
           product.save()
           return redirect('gestion:update', pk=product.id)
       else:
           print("Invalido")

Como puedes ver, en esta vista cargamos un template por defecto, pero en base a una lógica (data recibida correcta) redireccionamos a la vista de actualización.

Django return redirect() con parámetros

Tambien es posible redireccionar con parámetros;

return redirect('update', pk=15)

- Andrés Cruz

In english
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.