Aplicación web Flask

Este capítulo te guía desde cero para crear tu primera aplicación web con Flask y comprender la filosofía de diseño de los microframeworks.


Diferencias de posicionamiento entre Flask y Django

Django es un framework full-stack "grande y completo", que incluye ORM, motor de plantillas, panel de administración, autenticación de usuarios, manejo de formularios, etc.

Flask es un microframework—núcleo mínimo, solo proporciona enrutamiento y renderizado de plantillas; las demás funciones se añaden según sea necesario mediante extensiones.

CaracterísticaDjangoFlask
Filosofía de diseñoListo para usar (baterías incluidas)Microframework, extensiones bajo demanda
ORMORM integrado de DjangoFlask-SQLAlchemy (extensión)
Migraciones de base de datosIncluye makemigrations/migrateFlask-Migrate (extensión)
Autenticación de usuariosMódulo auth integradoFlask-Login (extensión)
Administración del backendDjango Admin integradoFlask-Admin (extensión)
Motor de plantillasDjango TemplatesJinja2 (sintaxis casi idéntica)
Configuración de rutasConfiguración centralizada en urls.pyDeclaración local con decoradores

Sugerencia: si eres principiante y quieres resultados rápidos, usa Django; si prefieres tener el control y ensamblar bajo demanda, usa Flask.


Preparación del entorno

Verifica la versión de Python (se requiere 3.8 o superior):

$ python3 --version
Python 3.12.0

Crear un entorno virtual e instalar Flask

$ python3 -m venv venv
$ source venv/bin/activate           # Windows:venv\Scripts\activate
(venv) $ pip install flask

Verificar la instalación:

(venv) $ python -c "import flask; print(flask.__version__)"
3.1.0

Aplicación mínima de Flask

Una aplicación Flask solo necesita un archivo Python.

Ejemplo

# Ruta del archivo: app.py
from flask import Flask

# Crear la instancia de la aplicación Flask
# __name__ le dice a Flask la ubicación del módulo actual (se usa para buscar plantillas y archivos estáticos)
app = Flask(__name__)

# @app.route("/") — Decorador de ruta: ejecuta la siguiente función cuando se accede a la ruta /
@app.route("/")
def index():
    return '<h1>Bienvenido al blog EJEMPLO</h1>'

# Si ejecutas directamente python app.py (en lugar de flask run), inicia el servidor de desarrollo
if __name__ == '__main__':
    app.run(debug=True)

Iniciar el servidor de desarrollo

(venv) $ flask run
 * Running on http://127.0.0.1:5000

Accede en el navegador a http://127.0.0.1:5000/ y verás el contenido de la página.

Activar la recarga en caliente (reinicia el servidor automáticamente al modificar el código):

(venv) $ flask run --debug

flask runBusca por defectoapp.pyenappla instancia. Si el nombre del archivo o de la instancia es diferente, es necesario configurar una variable de entorno:FLASK_APP=myapp.py(nombre del archivo),FLASK_APP=myapp:create_app()(función de fábrica).


Herramienta de línea de comandos de Flask

Además deflask run, Flask también proporciona otros comandos útiles.

ComandoFunción
flask runIniciar el servidor de desarrollo
flask run --debugInicia el servidor + recarga en caliente + modo de depuración
flask routesLista todas las rutas registradas
flask shellEntrar al shell interactivo (importa automáticamente la instancia de app)

Planificación de la estructura de directorios del proyecto

Aunque Flask admite aplicaciones de un solo archivo, los proyectos reales necesitan una organización de directorios clara.

blog_project/
├── app/
│   ├── __init__.py          # 应用工厂 create_app()(第十章引入)
│   ├── blueprints/          # 路由 Blueprint(第四章分离)
│   ├── templates/           # Jinja2 模板(第二章创建)
│   ├── static/              # 静态文件 CSS/JS/图片
│   ├── models.py            # SQLAlchemy 模型(第三章创建)
│   └── forms.py             # Flask-WTF 表单(第八章创建)
├── config.py                # 配置文件
├── app.py                   # 应用入口(第一章从这里开始)
└── .env                     # 环境变量

Manos a la obra: ruta de la página de inicio del blog

Crea el esqueleto del proyecto, configura la ruta de la página de inicio y haz que el navegador muestre un mensaje de bienvenida.

Ejemplo

# Ruta del archivo: app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    """Página de inicio del blog"""
    return """
<h1>Bienvenido al blog EJEMPLO</h1>
<p>Este es un sitio de exhibición de blog personal construido con Flask.</p>
<p>Más contenido estará disponible pronto, mantente atento.</p>
    """


@app.route("/about")
def about():
    """Página Acerca de"""
    return '<h1>Acerca de este sitio</h1><p>Notas de estudio sobre frontend y backend.</p>'

Ejecutar:

flask run

Accede a la página de inicio y a la página "Acerca de" para confirmar que las rutas funcionan correctamente.


Resumen del capítulo

En este capítulo completaste tres cosas: crear un entorno virtual e instalar Flask, comprender las diferencias de posicionamiento entre el microframework Flask y el completo Django, y escribir tu primera página con ruta.

Conclusión clave: una aplicación mínima de Flask solo necesitaFlask(__name__) + @app.route()decorador, y se utiliza paraflask runiniciar.

Otras extensiones