Cargando



Django - Formularios Avanzados

En este tutorial veremos como extender las funcionalidades de los formularios en Django.


abr 14 2014 01:26
Profesional
abr 17 2014 21:24
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.

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:


django_form_avz.jpg


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:

def mi_vista(request):
		 if request.method == 'POST':
				 form = MiFormulario(request.POST, request.FILES)
		 if form.is_valid():
				 #Si la data es válida aquí podemos continuar con nuestra lógica de aplicación
		 else:
				 #De lo contrario solo presentamos el objeto sin datos
				 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:

from Django.shortcuts import render, redirect
from Django.views.generic.edit import FormView
class MiFormulario(FormView):
		 form_class = MiFormulario
		 template_name = 'form.html'
		 success_url = '/success/'
		 def form_valid(self, form):
				 form.save()
				 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.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X