App Factory

Clase 22 de 36Curso 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:

  1. Crea un nuevo directorio llamado app: Este será el paquete principal de tu aplicación.
  2. Crea un archivo __init__.py dentro de app: Este archivo inicializará el paquete.
  3. 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:

  1. Crea un archivo config.py en tu paquete app.
  2. 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:

  1. Mueve el directorio static al directorio app.
  2. Mueve el directorio templates al directorio app.

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:

  1. Crea un archivo forms.py dentro de tu paquete app.
  2. 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()])
  1. 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.