App Factory
Clase 22 de 36 • Curso de Flask
Resumen
¿Cómo modularizar una aplicación Flask usando App Factories?
Iniciar un nuevo proyecto en Flask puede ser una tarea emocionante, pero a medida que la aplicación crece, es crucial mantenerla organizada y flexible. En este sentido, aprender a implementar la técnica de App Factory es esencial para cualquier desarrollador que desee estructurar su proyecto de manera eficaz tanto para entornos de desarrollo como de producción. A continuación, te mostramos cómo implementar este patrón en tu aplicación Flask.
¿Cómo crear un directorio para la app y la función createApp?
El primer paso para estructurar tu aplicación utilizando la técnica de App Factory es crear un nuevo directorio que contenga toda la lógica de tu aplicación. Haz lo siguiente:
- Crea un nuevo directorio llamado
app
: Este será el paquete principal de tu aplicación. - Crea un archivo
__init__.py
dentro deapp
: Este archivo inicializará el paquete. - Define la función
createApp
en__init__.py
: Esta función será responsable de retornar la instancia de la aplicación Flask.
Aquí tienes un ejemplo básico de cómo podría verse tu archivo __init__.py
:
from flask import Flask
from .config import Config
def createApp():
app = Flask(__name__)
app.config.from_object(Config)
return app
¿Cómo configurar dependencias y ajustes de la aplicación?
Una parte crítica de la configuración de la aplicación es gestionar las dependencias y ajustes. Es recomendable separar estos aspectos creando un archivo de configuración independiente:
- Crea un archivo
config.py
en tu paqueteapp
. - Define las clases de configuración: Puedes establecer variables como
secret_key
aquí.
Por ejemplo, tu archivo config.py
podría verse así:
class Config:
secret_key = 'super secret'
¿Cómo mover templates y archivos estáticos?
Por defecto, Flask buscará templates y archivos estáticos en ubicaciones específicas dentro de tu estructura de directorios. Para asegurarte de que Flask puede encontrarlos, debes mover tus carpetas static
y templates
al directorio app
:
- Mueve el directorio
static
al directorioapp
. - Mueve el directorio
templates
al directorioapp
.
Esto garantiza que Flask pueda acceder a estos archivos desde su nuevo punto de entrada en createApp
.
¿Cómo organizar formularios en un archivo separado?
Para mantener tu aplicación ordenada, es útil mover los formularios a un archivo separado. Aquí te mostramos cómo hacerlo:
- Crea un archivo
forms.py
dentro de tu paqueteapp
. - Define tus formularios en
forms.py
: Puedes importar los formularios necesarios desde Flask.
El formato básico para tu forms.py
podría ser:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
- Actualiza las importaciones en tu archivo principal: Asegúrate de que cualquier lugar donde se usan los formularios ahora los importe desde
forms.py
.
from app.forms import LoginForm
¿Cómo asegurar que todo funcione correctamente?
Después de haber hecho todos estos cambios, es crucial verificar que tu aplicación aún funcione. Ejecuta tus pruebas y asegúrate de que todas pasen correctamente:
# Comando para correr los tests en tu aplicación
pytest
Si todo está bien configurado, podrás ver confirmación de que las pruebas se pasan correctamente, y podrás cargar tu aplicación en el navegador para verificar visualmente su funcionamiento.
Implementar App Factories en Flask es un excelente primer paso para mantener tu proyecto organizado y adaptable a diferentes entornos. Sigue explorando y profundizando en temas como Blueprints para garantizar que tu código sea modular y sostenible a largo plazo.