En este tema, aprenderemos sobre la estructura básica de una aplicación Flask. Entender cómo organizar tu proyecto es crucial para mantener el código limpio, escalable y fácil de mantener. Vamos a desglosar los componentes principales y su propósito.
- Estructura Básica de un Proyecto Flask
Una aplicación Flask puede ser tan simple o compleja como necesites. Aquí hay un ejemplo de una estructura básica de proyecto:
my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── routes.py │ ├── models.py │ ├── templates/ │ │ └── index.html │ └── static/ │ └── style.css │ ├── venv/ │ └── ... (archivos del entorno virtual) │ ├── config.py ├── run.py └── requirements.txt
Descripción de los Archivos y Directorios
-
app/: Este directorio contiene la aplicación principal.
- init.py: Este archivo inicializa la aplicación Flask y configura las extensiones.
- routes.py: Aquí defines las rutas (endpoints) de tu aplicación.
- models.py: Este archivo contiene las definiciones de los modelos de base de datos.
- templates/: Este directorio contiene las plantillas HTML que se renderizan en las vistas.
- static/: Aquí se almacenan los archivos estáticos como CSS, JavaScript e imágenes.
-
venv/: Este directorio contiene el entorno virtual de Python, que incluye todas las dependencias instaladas.
-
config.py: Archivo de configuración para la aplicación Flask.
-
run.py: El script principal para ejecutar la aplicación.
-
requirements.txt: Lista de dependencias del proyecto.
- Creando la Estructura Básica
Vamos a crear una estructura básica de proyecto paso a paso.
Paso 1: Crear el Directorio del Proyecto
Primero, crea un directorio para tu proyecto:
Paso 2: Configurar el Entorno Virtual
Crea y activa un entorno virtual:
Paso 3: Instalar Flask
Instala Flask usando pip:
Paso 4: Crear la Estructura de Directorios y Archivos
Crea los directorios y archivos necesarios:
mkdir app mkdir app/templates mkdir app/static touch app/__init__.py touch app/routes.py touch app/models.py touch config.py touch run.py
- Configurando los Archivos
app/init.py
Este archivo inicializa la aplicación Flask:
from flask import Flask def create_app(): app = Flask(__name__) # Configuración de la aplicación app.config.from_object('config.Config') # Registro de Blueprints from . import routes app.register_blueprint(routes.bp) return app
app/routes.py
Define las rutas de tu aplicación:
from flask import Blueprint, render_template bp = Blueprint('main', __name__) @bp.route('/') def index(): return render_template('index.html')
config.py
Archivo de configuración:
run.py
Script principal para ejecutar la aplicación:
app/templates/index.html
Una plantilla HTML básica:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My Flask App</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>Welcome to My Flask App!</h1> </body> </html>
app/static/style.css
Un archivo CSS básico:
- Ejecutando la Aplicación
Para ejecutar la aplicación, usa el siguiente comando:
Visita http://127.0.0.1:5000/
en tu navegador para ver tu aplicación en funcionamiento.
Conclusión
En esta sección, hemos cubierto la estructura básica de una aplicación Flask y cómo organizar los archivos y directorios. Esta estructura te ayudará a mantener tu proyecto organizado y escalable a medida que crece. En el próximo módulo, profundizaremos en conceptos básicos como enrutamiento y manejo de métodos HTTP.
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