Creación de Formularios Web con wtforms en Python

Creación de Formularios Web con wtforms en Python

En este tutorial aprenderemos a crear formularios web con wtforms, una librería de Python que facilita la generación y validación de formularios HTML.

¿Qué es wtforms?

WTForms es una librería de Python que proporciona clases para representar formularios web. Estas clases pueden ser utilizadas para generar el código HTML del formulario, así como para validar los datos que se introducen en él.

¿Cómo funciona wtforms?

WTForms funciona creando una clase para cada formulario. Esta clase debe heredar de la clase Form de wtforms. Cada campo del formulario se representa como un atributo de la clase.

Ejemplo:

Python
from wtforms import Form, StringField

class Formulario(Form):
    nombre = StringField('Nombre')

formulario = Formulario()

Este código crea un formulario con un campo de texto llamado nombre.

Generar el código HTML del formulario

Para generar el código HTML del formulario, podemos utilizar el método render() de la clase Form.

Python
print(formulario.render())

Este código imprimirá el siguiente código HTML:

HTML
<form action="/" method="post">
    <input type="text" name="nombre" placeholder="Nombre">
    <input type="submit" value="Enviar">
</form>

Validar los datos del formulario

Los datos del formulario se pueden validar utilizando el método validate() de la clase Form.

Python
if formulario.validate():
    print(formulario.nombre.data)
else:
    print(formulario.errors)

Este código imprimirá el siguiente mensaje si el formulario es válido:

Juan

Si el formulario no es válido, se imprimirá un mensaje de error para cada campo que no haya sido validado correctamente.

Ejercicio

Crear un formulario con los siguientes campos:

  • Nombre
  • Apellidos
  • Correo electrónico
  • Edad

El formulario debe validar que el nombre y los apellidos sean cadenas de texto, que el correo electrónico tenga un formato válido y que la edad sea un número entero entre 18 y 100 años.

Solución

Python
from wtforms import Form, StringField, EmailField, IntegerField

class Formulario(Form):
    nombre = StringField('Nombre', [validators.Length(min=1, max=255)])
    apellidos = StringField('Apellidos', [validators.Length(min=1, max=255)])
    correo_electronico = EmailField('Correo electrónico')
    edad = IntegerField('Edad', [validators.NumberRange(min=18, max=100)])

formulario = Formulario()

if formulario.validate():
    print(formulario.nombre.data)
    print(formulario.apellidos.data)
    print(formulario.correo_electronico.data)
    print(formulario.edad.data)
else:
    print(formulario.errors)

Este código imprimirá el siguiente mensaje si el formulario es válido:

Juan
Perez
juan.perez@example.com
30

Conclusión

WTForms es una librería muy útil para crear formularios web en Python. Con esta librería, podemos generar formularios de forma sencilla y validar los datos que se introducen en ellos.