Contenidos
En este tutorial, aprenderemos cómo manejar formularios en Python utilizando el framework Flask. Flask es un microframework ligero que facilita la creación de aplicaciones web en Python.
Instalación de Flask
Primero, debemos instalar Flask. Puedes hacerlo usando pip:
1 |
pip install Flask |
Creación de un formulario simple
Crearemos una aplicación Flask que maneje un formulario simple con un campo de texto y un botón de envío.
1. Configuración del proyecto
Crea un archivo llamado app.py
y agrega el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': name = request.form.get('name') return f'Hola, {name}!' return render_template('index.html') if __name__ == '__main__': app.run(debug=True) |
2. Crear la plantilla HTML
Crea una carpeta llamada templates
en el mismo directorio que app.py
y dentro de ella, crea un archivo llamado index.html
con el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title>Formulario en Flask</title> </head> <body> <h1>Formulario en Flask</h1> <form method="post" action="/"> <label for="name">Nombre:</label> <input type="text" id="name" name="name"/> <input type="submit" value="Enviar"/> </form> </body> </html> |
Ejecutar la aplicación
Para ejecutar la aplicación, abre una terminal y navega al directorio donde se encuentra app.py
. Luego, ejecuta el siguiente comando:
1 |
python app.py |
Abre tu navegador web y ve a http://127.0.0.1:5000/
. Deberías ver el formulario y poder enviar tu nombre para recibir una respuesta personalizada.
Validación de formularios
Para validar formularios, podemos usar la extensión Flask-WTF. Instálala usando pip:
1 |
pip install Flask-WTF |
1. Configurar Flask-WTF
Modifica tu archivo app.py
para incluir la validación de formularios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired app = Flask(__name__) app.secret_key = 'supersecretkey' class NameForm(FlaskForm): name = StringField('Nombre', validators=[DataRequired()]) submit = SubmitField('Enviar') @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): name = form.name.data return f'Hola, {name}!' return render_template('index.html', form=form) if __name__ == '__main__': app.run(debug=True) |
2. Modificar la plantilla HTML
Actualiza index.html
para utilizar Flask-WTF:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title>Formulario en Flask</title> </head> <body> <h1>Formulario en Flask</h1> <form method="post" action="/"> {{ form.hidden_tag() }} <p> {{ form.name.label }}<br /> {{ form.name(size=32) }}<br /> {% for error in form.name.errors %} <span style="color: red;">[{{ error }}]</span> {% endfor %} </p> <p>{{ form.submit() }}</p> </form> </body> </html> |