0

formularios avanzados django



formularios avanzados django

formularios avanzados django La construcción de formularios puede facilitarse mucho utilizando las clases genéricas de Django sin embargo no siempre las vamos a utilizar ya que en ocasiones necesitamos desarrollar la lógica completa de nuestra parte.

Afortunadamente dentro de Django podemos crear también la forma en la cual vamos a procesar nuestros formularios y como administrar su lógica, con ello lograremos aplicaciones mucho más personalizadas y cercanas a nuestros objetivos.

mas tutoriales de informatica y programacion

Temas mas vistos

Uniendo la data al formulario

Sabemos que el formulario es una forma de tomar datos del usuario, por lo tanto tenemos dos estados del mismo, con datos y sin datos, cuando el formulario tiene datos es cuando vamos a hacer nuestras operaciones, en cambio cuando no tiene nada simplemente lo debemos ignorar para el procesamiento de datos.

Ejercicio
Vamos a realizar el siguiente ejercicio, desde la consola interactiva de Django, vamos a crear un formulario y con el método is_bound() validaremos si tiene una data asociada, de esta forma podremos ver un poco más cómo se comporta el formulario dentro del framework, veamos en la imagen a continuación los resultados:

Como vemos en el ejemplo solo cuando le pasamos los valores al formulario mientras utilizamos el método is_bound es que obtenemos una respuesta True.

Validar Datos

Como sabemos, si trabajamos en web los datos que ingresa el usuario pueden ser la forma de ataque más efectiva contra nuestra aplicación, esto es debido a que por desconocimiento puede ingresar cualquier tipo de formatos que nuestra aplicación no está lista para aceptar y por ende puede terminar en un error fatal, para evitar esto siempre debemos asegurarnos que la data es segura antes de procesarla para ello podemos utilizar lo siguiente:

  1. def mi_vista(request):
  2. if request.method == ‘POST’:
  3. form = MiFormulario(request.POST, request.FILES)
  4. if form.is_valid():
  5. #Si la data es válida aquí podemos continuar con nuestra lógica de aplicación
  6. else:
  7. #De lo contrario solo presentamos el objeto sin datos
  8. form = MiFormulario()

Como vemos en el ejemplo hacemos una instancia de la clase MiFormulario y le unimos los datos que vienen en el request, por el método POST y los del tipo FILES en caso que traigamos una imagen o un archivo de otro tipo, dependiendo de nuestro modelo lo que traiga nuestro formulario debe ser evaluado para ello utilizamos el método is_valid(), con esto nos aseguramos que si viene un string donde debería venir un número, se rechace la información y no se deje llegar a la base de datos donde podría causar un error fatal.

Class Based Views

Ya con lo que hemos visto en el ejemplo anterior podemos ahora ver cómo podemos aplicar algo similar utilizando las Class Based Views y de esta forma utilizar las herramientas del framework.

Si utilizamos el FormView genérico de Django podemos lograr algo similar al siguiente código:

  1. from Django.shortcuts import render, redirect
  2. from Django.views.generic.edit import FormView
  3. class MiFormulario(FormView):
  4. form_class = MiFormulario
  5. template_name = ‘form.html’
  6. success_url = ‘/success/’
  7. def form_valid(self, form):
  8. form.save()
  9. return super(MyView, self).form_valid(form)

Como vemos la utilización avanzada de los formularios nos permite hacer aplicaciones más dinámicas y de forma más personalizada con lo que podemos lograr resultados increíbles con pocas líneas de código.







comparte con tus amigos

codigo fuente

Deja un comentario

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