Ir al contenido

Frameworks y rutas profesionales

Un framework no te hace programador por si solo. Te da una estructura y herramientas para resolver un tipo de problema mas rapido. Aprende primero Python base; despues elige herramientas segun la tarea.

Quiero construirRecomendacion inicialPor que
API modernaFastAPIUsa type hints, validacion y documentacion interactiva automatica
Sitio web completo con adminDjangoTrae ORM, admin, formularios, autenticacion y estructura grande
Web pequena o prototipoFlaskEs liviano, flexible y facil de entender
Analisis de datospandasTablas, limpieza, agrupaciones y lectura de CSV/Excel
App de datos rapidaStreamlitInterfaces interactivas con poco codigo Python
TestspytestPruebas legibles con assert y buena salida de errores
CLI profesionalTyper + RichComandos claros, ayuda automatica y salida visual agradable

Usalo cuando quieras crear una API: endpoints HTTP que reciben JSON y devuelven JSON.

from fastapi import FastAPI
app = FastAPI()
@app.get("/saludo/{nombre}")
def saludar(nombre: str):
return {"mensaje": f"Hola, {nombre}"}

Respuesta de /saludo/Ana:

{
"mensaje": "Hola, Ana"
}

Retorno: la funcion devuelve un dict; FastAPI lo convierte en JSON.

Cuando elegirlo:

  • APIs para frontend, mobile o integraciones.
  • Proyectos donde la validacion de datos importa.
  • Servicios que se benefician de documentacion OpenAPI.

Usalo cuando quieras una aplicacion web completa con base de datos, usuarios, panel de administracion y convenciones fuertes.

from django.db import models
class Curso(models.Model):
titulo = models.CharField(max_length=120)
publicado = models.BooleanField(default=False)
def __str__(self):
return self.titulo

Cuando elegirlo:

  • SaaS, intranets, plataformas educativas, ecommerce interno.
  • CRUDs con muchas entidades relacionadas.
  • Equipos que necesitan convenciones claras.

Usalo para entender los fundamentos web o crear servicios pequenos.

from flask import Flask
app = Flask(__name__)
@app.get("/")
def inicio():
return "Hola desde Flask"

Retorno: inicio() devuelve un str; Flask lo usa como cuerpo de la respuesta HTTP.

Cuando elegirlo:

  • Prototipos.
  • Apps pequenas.
  • Aprender rutas, request/response y templates sin demasiada estructura.

Usalo para leer, limpiar y analizar datos tabulares.

import pandas as pd
datos = pd.DataFrame(
[
{"curso": "Python", "alumnos": 120},
{"curso": "SQL", "alumnos": 80},
]
)
print(datos["alumnos"].sum())

Salida:

200

Retorno: datos["alumnos"].sum() devuelve un numero.

Cuando elegirlo:

  • CSV, Excel, reportes y dashboards.
  • Limpieza de datos.
  • Analisis exploratorio antes de automatizar.

Usalo si quieres una app visual de datos sin construir frontend desde cero.

import streamlit as st
st.title("Panel de cursos")
alumnos = st.slider("Alumnos", 0, 500, 120)
st.write(f"Alumnos seleccionados: {alumnos}")

Cuando elegirlo:

  • Demos internas.
  • Dashboards de datos.
  • Prototipos para mostrar resultados rapidamente.

Usalo para comprobar que tus funciones siguen funcionando.

Archivo calculadora.py:

def sumar(a, b):
return a + b

Archivo test_calculadora.py:

from calculadora import sumar
def test_sumar():
assert sumar(2, 3) == 5

Ejecutar:

Ventana de terminal
pytest
PerfilAprende despues de Python base
BackendHTTP, FastAPI, SQL, PostgreSQL, Docker, testing
Web full stackDjango, HTML, CSS, templates, autenticacion
Datospandas, NumPy, visualizacion, SQL, notebooks
Automatizacionpathlib, csv/json, requests, Selenium o Playwright
Calidadpytest, mocks, fixtures, CI