El enrutamiento es uno de los conceptos fundamentales en Flask y en cualquier framework web. Permite definir cómo las URLs de tu aplicación web se mapean a funciones específicas en tu código. En esta sección, aprenderás cómo configurar rutas en Flask, cómo manejar parámetros en las URLs y cómo trabajar con diferentes métodos HTTP.
Conceptos Clave
- Rutas: Las rutas son las URLs que los usuarios pueden visitar en tu aplicación.
- Decoradores: En Flask, los decoradores
@app.route
se utilizan para asociar una URL con una función. - Parámetros de URL: Puedes capturar partes de la URL como parámetros y pasarlos a tus funciones.
- Métodos HTTP: Flask permite manejar diferentes métodos HTTP como GET, POST, PUT, DELETE, etc.
Configuración Básica de Rutas
Ejemplo Básico
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "¡Bienvenido a mi aplicación Flask!" if __name__ == '__main__': app.run(debug=True)
Explicación:
from flask import Flask
: Importa la clase Flask.app = Flask(__name__)
: Crea una instancia de la aplicación Flask.@app.route('/')
: Define una ruta para la URL raíz (/
).def home()
: Define una función que se ejecutará cuando se visite la URL raíz.app.run(debug=True)
: Inicia la aplicación en modo de depuración.
Parámetros en las URLs
Puedes capturar partes de la URL y pasarlas como parámetros a tus funciones.
@app.route('/user/<username>') def show_user_profile(username): return f'Perfil del usuario: {username}'
Explicación:
@app.route('/user/<username>')
: Define una ruta que captura el valor después de/user/
y lo pasa como parámetrousername
a la funciónshow_user_profile
.
Tipos de Parámetros
Puedes especificar el tipo de los parámetros en la URL.
Explicación:
<int:post_id>
: Especifica quepost_id
debe ser un entero.
Métodos HTTP
Por defecto, Flask maneja solo el método GET. Puedes especificar otros métodos como POST, PUT, DELETE, etc.
@app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': return "Procesando el formulario de login" else: return "Mostrando el formulario de login"
Explicación:
methods=['GET', 'POST']
: Especifica que la ruta/login
puede manejar tanto GET como POST.request.method
: Permite verificar el método HTTP utilizado.
Ejercicios Prácticos
Ejercicio 1: Ruta Básica
Crea una ruta que devuelva "Hola, Mundo!" cuando se visite la URL /hello
.
Ejercicio 2: Parámetros en la URL
Crea una ruta que capture un nombre de usuario y devuelva "Hola, [nombre]!" cuando se visite la URL /greet/<nombre>
.
Ejercicio 3: Métodos HTTP
Crea una ruta /submit
que maneje tanto GET como POST. Si es GET, debe devolver "Formulario de envío". Si es POST, debe devolver "Datos enviados".
@app.route('/submit', methods=['GET', 'POST']) def submit(): if request.method == 'POST': return "Datos enviados" else: return "Formulario de envío"
Soluciones
Solución al Ejercicio 1
Solución al Ejercicio 2
Solución al Ejercicio 3
@app.route('/submit', methods=['GET', 'POST']) def submit(): if request.method == 'POST': return "Datos enviados" else: return "Formulario de envío"
Conclusión
En esta sección, has aprendido los conceptos básicos del enrutamiento y mapeo de URLs en Flask. Ahora sabes cómo definir rutas, manejar parámetros en las URLs y trabajar con diferentes métodos HTTP. Estos conocimientos son fundamentales para construir aplicaciones web dinámicas y funcionales con Flask.
En el próximo tema, exploraremos cómo manejar métodos HTTP en mayor detalle, lo que te permitirá crear aplicaciones más interactivas y robustas.
Curso de Desarrollo Web con Flask
Módulo 1: Introducción a Flask
- ¿Qué es Flask?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Flask
- Entendiendo la Estructura de una Aplicación Flask
Módulo 2: Conceptos Básicos de Flask
- Enrutamiento y Mapeo de URLs
- Manejo de Métodos HTTP
- Renderizando Plantillas con Jinja2
- Trabajando con Archivos Estáticos
Módulo 3: Formularios y Entrada de Usuario
Módulo 4: Integración de Bases de Datos
- Introducción a Flask-SQLAlchemy
- Definiendo Modelos
- Realizando Operaciones CRUD
- Migraciones de Base de Datos con Flask-Migrate
Módulo 5: Autenticación de Usuarios
- Registro de Usuarios
- Inicio y Cierre de Sesión de Usuarios
- Hashing de Contraseñas
- Gestión de Sesiones de Usuario
Módulo 6: Conceptos Avanzados de Flask
- Blueprints para Aplicaciones Grandes
- Manejo de Errores
- Páginas de Error Personalizadas
- Registro y Depuración
Módulo 7: APIs RESTful con Flask
- Introducción a las APIs RESTful
- Creación de Endpoints RESTful
- Manejo de Datos JSON
- Autenticación para APIs
Módulo 8: Despliegue y Producción
- Configuración de Flask para Producción
- Despliegue en Heroku
- Despliegue en AWS
- Monitoreo y Optimización del Rendimiento
Módulo 9: Pruebas y Mejores Prácticas
- Pruebas Unitarias con Flask
- Pruebas de Integración
- Cobertura de Pruebas
- Mejores Prácticas para el Desarrollo con Flask