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ística | Django | Flask |
|---|---|---|
| Filosofía de diseño | Listo para usar (baterías incluidas) | Microframework, extensiones bajo demanda |
| ORM | ORM integrado de Django | Flask-SQLAlchemy (extensión) |
| Migraciones de base de datos | Incluye makemigrations/migrate | Flask-Migrate (extensión) |
| Autenticación de usuarios | Módulo auth integrado | Flask-Login (extensión) |
| Administración del backend | Django Admin integrado | Flask-Admin (extensión) |
| Motor de plantillas | Django Templates | Jinja2 (sintaxis casi idéntica) |
| Configuración de rutas | Configuración centralizada en urls.py | Declaració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
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.
| Comando | Función |
|---|---|
| flask run | Iniciar el servidor de desarrollo |
| flask run --debug | Inicia el servidor + recarga en caliente + modo de depuración |
| flask routes | Lista todas las rutas registradas |
| flask shell | Entrar 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
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.