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:
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
.
print(formulario.render())
Este código imprimirá el siguiente código 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
.
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
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.