Python Flask – Creación y validación de formularios con Flask-WTF

Paso 1: Instalar Flask-WTF

Para usar Flask-WTF, primero debes instalarlo en tu entorno virtual. Puedes hacerlo con pip:

pip install Flask-WTF

Paso 2: Crear un Formulario

forms.py:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class MiFormulario(FlaskForm):
    nombre = StringField('Nombre', validators=[DataRequired()])
    enviar = SubmitField('Enviar')

Hemos definido un formulario MiFormulario con un campo de texto (StringField) llamado «nombre» y un botón de enviar (SubmitField). Hemos aplicado una validación DataRequired() al campo «nombre» para asegurarnos de que no esté vacío.

Paso 3: Usar el Formulario en una Ruta

En tu archivo principal de Flask (app.py), importa el formulario y úsalo en una ruta:

app.py

from flask import Flask, render_template, redirect, url_for
from forms import MiFormulario

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mi_clave_secreta'  # Clave secreta para proteger formularios

@app.route('/', methods=['GET', 'POST'])
def index():
    formulario = MiFormulario()
    if formulario.validate_on_submit():
        nombre = formulario.nombre.data
        return f'Hola, {nombre}'

    return render_template('index.html', formulario=formulario)

if __name__ == '__main__':
    app.run()

En este ejemplo, hemos importado MiFormulario desde forms.py y lo hemos utilizado en la ruta '/'. La función validate_on_submit() se utiliza para validar el formulario cuando se envía. Si el formulario es válido, se recoge el nombre ingresado y se muestra un saludo.

Paso 4: Crear una Plantilla HTML para el Formulario

Crea una plantilla HTML para renderizar el formulario. Por ejemplo, crea un archivo index.html en el directorio templates:

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Formulario</title>
</head>
<body>
    <h1>Formulario</h1>
    <form method="POST" action="/">
        {{ formulario.hidden_tag() }}
        <div>
            {{ formulario.nombre.label }}
            {{ formulario.nombre(size=32) }}
        </div>
        <div>
            {{ formulario.enviar() }}
        </div>
    </form>
</body>
</html>

En esta plantilla, hemos utilizado las variables {{ formulario.hidden_tag() }}, {{ formulario.nombre.label }}, y {{ formulario.nombre(size=32) }} para renderizar los campos del formulario y el botón de enviar.

Paso 5: Ejecutar la Aplicación

Ejecuta tu aplicación Flask y visita http://localhost:5000/. Deberías ver el formulario y poder enviar datos. Flask-WTF se encargará de la validación del formulario y mostrará mensajes de error si es necesario.

One thought on “Python Flask – Creación y validación de formularios con Flask-WTF

Deja un comentario