Implementación de Flask-Bootstrap y Flask-WTF
Clase 17 de 36 • Curso de Flask
Resumen
¿Cómo implementar formularios en Flask?
Implementar formularios en Flask es fundamental para desarrollar aplicaciones web interactivas y dinámicas. Los formularios permiten recopilar información de los usuarios, como en un proceso de inicio de sesión o el registro de una cuenta nueva. En esta guía, exploraremos cómo usar Flask WTForms para crear, mostrar y validar formularios en Flask.
¿Qué es Flask WTForms?
Flask WTForms es una extensión que integra WTForms, una librería de Python para renderizar y validar formularios web, con Flask. Ofrece una forma sencilla y estructurada de manejar formularios, permitiendo a los desarrolladores enfocarse en la lógica de la aplicación sin preocuparse por los detalles de la validación y el manejo de datos del formulario.
¿Cómo instalar Flask WTForms?
Comencemos por instalar la extensión Flask WTForms. Debemos añadirla al archivo requirements.txt
de nuestra aplicación. La instalación se realiza ejecutando el siguiente comando en la terminal:
pip install -r requirements.txt
¿Cómo crear un formulario de inicio de sesión?
Para crear nuestro primer formulario en Flask, definiremos una clase que extienda FlaskForm
. En este caso, desarrollaremos un formulario de inicio de sesión (login form
) con campos para el nombre de usuario y la contraseña.
-
Importar FlaskForm y campos necesarios:
from flask_wtf import FlaskForm from wtforms import StringField, PasswordField from wtforms.validators import DataRequired
-
Definir la clase del formulario:
class LoginForm(FlaskForm): username = StringField('Nombre de usuario', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()])
El campo username
y password
se validan para garantizar que el usuario ingrese la información requerida.
¿Cómo agregar un botón de envío al formulario?
Para completar el formulario, añadiremos un campo de envío:
from wtforms import SubmitField
class LoginForm(FlaskForm):
username = StringField('Nombre de usuario', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Enviar')
¿Cómo renderizar el formulario en la plantilla HTML?
Para mostrar nuestro formulario en una plantilla HTML, lo importamos en el contexto de la vista y lo utilizamos en el archivo hello.html
. Podemos hacerlo de la siguiente manera:
-
Crear una instancia del formulario y pasarla al contexto:
@app.route('/hello', methods=['GET', 'POST']) def hello(): form = LoginForm() return render_template('hello.html', form=form)
-
Renderizar el formulario en HTML:
Usaremos las herramientas de
bootstrap_wtf
para un renderizado más simple de nuestro formulario:{% from 'bootstrap/wtf.html' import wtf_quick_form as wtf %} {{ wtf(form) }}
Esta función wtf_quick_form
permite un renderizado fácil y completo del formulario con la ayuda de Bootstrap.
¿Cómo validar y manejar el envío del formulario?
Finalmente, necesitamos validar y manejar la respuesta del formulario cuando se envía al servidor. Esto implica ajustar la vista para procesar el formulario:
@app.route('/hello', methods=['GET', 'POST'])
def hello():
form = LoginForm()
if form.validate_on_submit():
# Procesar los datos del formulario
username = form.username.data
password = form.password.data
# Añadir lógica de autenticación
return render_template('hello.html', form=form)
¿Qué hemos aprendido hasta ahora?
Hemos aprendido a instalar Flask WTForms, crear un formulario de inicio de sesión, añadir validaciones básicas y renderizar el formulario utilizando plantillas HTML en Flask. Ahora estamos listos para avanzar en la gestión de formularios en nuestras aplicaciones web. ¡Sigue explorando y mejorando tus habilidades en Flask!