Programación Back-End

Unidad 2: Framework Back-End

Manejo de formularios

Redactado por Criz
Publicado el 9 de junio de 2024 a las 21:38
Última actualización el 9 de junio de 2024 a las 21:38

Acciones rapidas
Editar
Siguiente
Previo

Manejo de los formularios

Si has llegado a este capítulo, quiere decir que estamos listos para ya lo último.

El manejo de formularios es la acción de recibir sus datos en nuestro back-end, nuestras vistas podrán acceder a los datos ingresados por el usuario, y con ello podremos realizar la creación de un nuevo producto.

Estaremos usando lo aprendido en los últimos capítulos, así que échales un vistazo.

La vista

La vista crear dentro de hogar/views.py debe tener un aspecto así:

1
2
3
4
5
6
7
8
def crear(request):
    #                             👇 rellenamos los campos automaticamente con los parametros POST
    formulario = ProductoForm(request.POST or None) # si no hay parametros, entonces None (form vacio)
    if request.method == "POST": # si se ha realizado un POST
        if formulario.is_valid(): # verifica que el formulario sea valido
            #           👇 como heredamos el formulario de un modelo. podemos acceder a su metodo save()
            formulario.save() # esto guardara lo ingresado a nuestra tabla Productos
    return render(request, "tienda/crud.html", {"form":formulario})

Auto valor del slug

Nuestro formulario no abarca el campo slug de nuestro modelo Producto. Por lo que tendremos que automatizarlo.
Dentro de hogar/models.py, importamos slugify:

1
from django.utils.text import slugify

Ahora, sobreescribimos la funcion save()

1
2
3
4
5
6
7
class Producto(models.Model):
    ...
    def save(self, *args, **kwargs):
        #           👇 crea un slug en funcion del nombre
        self.slug = slugify(self.nombre)
        # 👇 llamamos a la funcion save() original
        super(Producto, self).save(*args, **kwargs)

Sobrescribir está bien, pero siempre debes llamar al método original mediante super.

Ahora, en el navegador, podemos ingresar un nuevo producto:

Si quieres acceder a los datos antes del guardado, puedes hacerlo mediante formulario.cleaned_data["nombre"].
En cleaned_data[] se encuentran los datos sanitizados.
python ... if formulario.is_valid(): # verifica que el formulario sea valido # 👇 como heredamos el formulario de un modelo. podemos acceder a su metodo save() print(formulario.cleaned_data["nombre"]) # "hoyo de tarugo" formulario.save() # esto guardara lo ingresado a nuestra tabla Productos ...
En data[] se encuentran los datos crudos, no se recomienda su uso.

Al clicar en el botón Submit, el producto debería ser guardado en la base de datos, por lo que podríamos verlo en la galería de productos.


Siguiente
Previo