Como desarrollador que trabaja principalmente con Next.js y NestJS, recientemente revisé un pull request en un proyecto Django y me di cuenta de cuánto ha evolucionado el ecosistema Python desde la última vez que lo usé profesionalmente. En este artículo describo desde la perspectiva de un desarrollador de Node.js cómo montar un entorno Python moderno y poner en marcha una API REST de juguete con panel de administración.

Entorno Python moderno: virtualenv, venv y uv

Desde Python 3.3 venv forma parte de la librería estándar y sigue siendo una forma simple de crear entornos aislados con python -m venv venv && source venv/bin/activate. virtualenv sigue siendo útil y se instala con pip install virtualenv, pero si buscas algo más unificado te interesa uv. uv se instala con curl -LsSf https://astral.sh/uv/install.sh | sh o con pipx install uv y permite crear y activar entornos con uv venv && source .venv/bin/activate. Con uv añades paquetes con uv add nombre_paquete, genera pyproject.toml si falta y mantiene un archivo uv.lock para bloqueo de dependencias; instalar todas las dependencias se hace con uv sync. En la práctica uv centraliza creación de entornos, instalación y resolución de dependencias, reemplazando herramientas dispersas como virtualenv, pip, pip-tools o pipx en muchos flujos de trabajo, y ofrece una experiencia que a un desarrollador de Node.js le resulta familiar por su coherencia.

Diferencia clave con Node.js: nvm gestiona versiones globales de Node y dependencias globales por versión, mientras que venv, virtualenv y uv crean un entorno por proyecto con su propio interprete y carpeta de paquetes, de forma similar a cómo package.json y node_modules quedan aislados por proyecto en Node.

Primeros pasos con Django

Con el entorno activado instala Django con uv add django o pip install django. Crea el proyecto con django-admin startproject demo y arranca el servidor de desarrollo con python manage.py runserver. El servidor de desarrollo es ideal para desarrollar porque recarga automáticamente y muestra errores detallados, pero no es adecuado para producción. El servidor de desarrollo usa WSGI; para producción conviene usar ASGI con servidores como Uvicorn o Daphne y combinar con gunicorn o un proxy inverso adecuado para rendimiento y seguridad.

Servicio API de juguete y panel de administración

Para este ejercicio usamos SQLite para simplificar. Aplica las migraciones iniciales con python manage.py migrate y crea un superusuario con python manage.py createsuperuser --username admin --email tu@email.com. Añade Django REST Framework con uv add djangorestframework y crea una app api con cd demo && django-admin startapp api.

Modelos propuestos para el CRUD sencillo: Category con un campo name tipo CharField max_length 100; Product con una ForeignKey a Category, name CharField, description TextField y price DecimalField; Review con una ForeignKey a Product, rating IntegerField y comment TextField. Sobrescribe el metodo str en cada modelo para que el admin muestre representaciones legibles en la interfaz de administración.

Serializadores y vistas con DRF

Define serializers que hereden de ModelSerializer y expone solo los campos necesarios para evitar filtrar información inadvertida. Para simplicidad en esta demo puedes exponer CRUD publico con viewsets que hereden de ModelViewSet y permisos AllowAny. Registra rutas usando routers.DefaultRouter y monta el router en api/urls.py para obtener endpoints como /api/categories, /api/products y /api/reviews.

No olvides añadir rest_framework y demo.api en INSTALLED_APPS del settings para que todo funcione. Registra los modelos en admin.py para gestionarlos desde el panel de administración con admin.site.register ModelClass.

Genera migraciones con python manage.py makemigrations api y aplica con python manage.py migrate. Ejecuta python manage.py runserver y prueba con curl http://localhost:8000/api/reviews que devolverá un array vacío en una base de datos nueva. Luego puedes entrar en /admin, añadir categoría, producto y review y ver cómo los datos fluyen por la API.

Comparación rápida con herramientas del mundo JavaScript

Si vienes de Node.js la interfaz administrativa automática de Django puede parecer casi mágica, ya que viene lista para usar sin montar varias piezas. En JavaScript lo más parecido sería combinar ORM y herramientas adicionales: Prisma o TypeORM para el acceso a datos y migraciones, y AdminJS o soluciones como Strapi para un panel admin. Esa alternativa funciona pero implica unir más componentes que en Django, que ofrece una experiencia integral batteries included.

Buenas prácticas y siguientes pasos

En un proyecto real considerarías añadir paginación, filtrado y ordenación en la API, por ejemplo con django-filter y las utilidades de DRF. Para producción incorpora servidores ASGI, gestión de variables de entorno, logging estructurado, métricas y trazabilidad. Si desplegas en la nube puedes integrar monitoring y OpenTelemetry, y si alojas en proveedores gestionados piensa en servicios cloud para escalabilidad.

Q2BSTUDIO y cómo podemos ayudarte

En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones a medida, inteligencia artificial y ciberseguridad. Ofrecemos desarrollo de software a medida y aplicaciones a medida que se adaptan a tus procesos, integración de agentes IA y soluciones de ia para empresas y servicios de inteligencia de negocio y power bi para explotar tus datos. También asesoramos y desplegamos infraestructuras en la nube con servicios cloud aws y azure y proporcionamos servicios de ciberseguridad y pentesting para proteger tus activos digitales.

Si buscas construir una aplicación Django con un panel admin y una API robusta, o quieres integrar modelos de inteligencia artificial en tu producto, te invitamos a conocer nuestros servicios de desarrollo en desarrollo de aplicaciones a medida y nuestras propuestas de inteligencia artificial para empresas. Podemos acompañarte desde el diseño de la arquitectura hasta el despliegue y la monitorización, incorporando mejores prácticas de seguridad y escalado.

Conclusión

Ha sido gratificante desempolvar conocimientos de Python y Django y comprobar que hoy en día el ecosistema es más cómodo y coherente, especialmente con herramientas como uv. Django sigue siendo una excelente opción para proyectos que requieren una capa de datos sólida y un admin listo para usar, y combinado con DRF permite construir APIs productivas con poco esfuerzo. En próximos pasos voy a experimentar con filtrado, paginación y OpenTelemetry para ver cómo esta pila puede servir como alternativa a un CMS headless en casos concretos. He subido este proyecto de prueba a GitHub para quien quiera explorarlo y hay un espejo del artículo en mi sitio personal.

Palabras clave relacionadas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.