Presentación

Django es un framework Web open source escrito en Python para desarrollar aplicaciones que van desde un sitio de contenido hasta una plataforma empresarial completa.

Proporciona directamente gran parte de los componentes necesarios habitualmente en una aplicación Web: routing, vistas, acceso a bases de datos, migraciones, templates, formularios, autenticación, sesiones, caché, administración y herramientas de seguridad.

Este enfoque «batteries included» reduce el número de bibliotecas que deben combinarse para obtener una base funcional y coherente.

Django puede generar directamente páginas HTML mediante su motor de templates o servir como backend para una interfaz JavaScript independiente. Sin embargo, las API REST no forman parte del núcleo del framework: suelen construirse con bibliotecas de terceros como Django REST Framework.

El framework admite arquitecturas WSGI tradicionales y ASGI para aplicaciones que necesitan funciones asíncronas.

A 3 de octubre de 2026, Django 6.1.1 constituye la última versión oficial. Django 5.2 continúa paralelamente como rama LTS para proyectos que buscan un soporte más prolongado.

Funcionalidades

ORM y modelos

El ORM de Django permite representar los datos como clases Python.

Cada modelo describe campos y relaciones que después pueden consultarse mediante la API QuerySet sin escribir sistemáticamente SQL.

Se admiten relaciones uno a uno, varios a uno y varios a varios, además de agregaciones, anotaciones, expresiones y transacciones.

Django 6.1 también añade modos para controlar cómo se recuperan desde la base de datos determinados campos que no se cargaron inicialmente.

Migraciones

Django dispone de un sistema integrado de migraciones de base de datos.

Los cambios realizados en los modelos pueden transformarse en archivos de migración y después aplicarse mediante comandos de gestión.

Estas migraciones permiten hacer evolucionar progresivamente el esquema manteniendo un historial versionado junto al proyecto.

Bases de datos

SQLite está disponible por defecto y resulta especialmente adecuado para desarrollo o proyectos pequeños.

Para producción, la documentación de Django recomienda generalmente PostgreSQL.

Django también admite oficialmente MySQL, MariaDB y Oracle según las versiones compatibles con cada rama del framework.

El ORM permite mantener una gran parte del código de la aplicación independiente del motor elegido, aunque determinadas funciones siguen siendo específicas de cada base de datos.

Routing y vistas

El sistema de URL asocia las rutas de una aplicación con vistas Python.

Las vistas pueden escribirse como funciones o clases.

Django proporciona vistas genéricas para varias operaciones habituales como mostrar listas, detalles, crear o modificar objetos.

Las rutas pueden agruparse por aplicación y utilizar parámetros dinámicos.

Templates

El Django Template Language permite generar páginas HTML a partir de templates.

Variables, filtros, condiciones, bucles, herencia e inclusiones permiten construir interfaces reutilizables.

El motor aplica por defecto un escape HTML destinado a reducir riesgos de inyección al mostrar datos no fiables.

Django también puede asociarse a otros motores de templates si el proyecto lo necesita.

Formularios

El framework ofrece un sistema completo de formularios.

Los campos pueden validarse del lado servidor y asociarse a widgets HTML.

ModelForm puede generar gran parte de un formulario directamente desde un modelo Django.

Esta integración simplifica las operaciones habituales de creación y modificación de datos.

Administración

La interfaz de administración de Django puede generarse a partir de los modelos registrados.

Proporciona rápidamente listas, formularios, búsqueda, filtros y gestión de relaciones.

La administración puede personalizarse con clases ModelAdmin, acciones y diferentes ajustes de visualización.

Está pensada principalmente para equipos internos y usuarios de confianza, más que para constituir automáticamente la interfaz pública de una aplicación.

Autenticación y permisos

Django proporciona un sistema integrado para usuarios, contraseñas, sesiones y permisos.

Gestiona especialmente inicio de sesión, cierre de sesión, grupos y permisos asociados a los modelos.

El modelo de usuario puede sustituirse o ampliarse para responder a las necesidades de un proyecto.

Las funciones de autenticación también pueden utilizarse con las API asíncronas modernas del framework.

Seguridad

Django integra varias protecciones destinadas a aplicaciones Web.

Proporciona especialmente protección CSRF, escape frente a determinados ataques XSS, protección frente a inyección SQL mediante el ORM, gestión segura de contraseñas y mecanismos contra clickjacking.

Desde Django 6.0, el framework también ofrece soporte integrado para Content Security Policy — CSP.

Estos mecanismos reducen riesgos habituales, pero no sustituyen una configuración correcta del servidor, los permisos y el código de la aplicación.

Middleware

Los middlewares intervienen alrededor del procesamiento de peticiones y respuestas.

Pueden gestionar sesiones, autenticación, seguridad, caché, localización o añadir lógica específica del proyecto.

El orden de los middlewares influye en su comportamiento y debe configurarse con atención.

ASGI, WSGI y soporte asíncrono

Django admite WSGI para aplicaciones síncronas clásicas y ASGI para arquitecturas asíncronas.

Las vistas pueden escribirse con async def.

Varias partes del framework también disponen de API asíncronas, especialmente ORM, caché, autenticación, sesiones y signals.

Sin embargo, determinadas operaciones siguen siendo síncronas o dependen de bibliotecas que todavía no ofrecen una implementación completamente asíncrona.

Caché

Django proporciona una API de caché que puede aplicarse a una vista completa, una parte de un template o valores individuales.

Pueden utilizarse diferentes backends según la arquitectura, incluyendo memoria local, archivos, bases de datos o soluciones externas compatibles.

La caché puede reducir el trabajo realizado por la aplicación para datos o páginas consultados con frecuencia.

Archivos estáticos y medios

El framework distingue los archivos estáticos de la aplicación — CSS, JavaScript e imágenes de interfaz — de los archivos multimedia enviados por los usuarios.

django.contrib.staticfiles agrupa los recursos estáticos para facilitar su despliegue.

En producción, su distribución suele confiarse a un servidor Web, CDN o servicio especializado en lugar del servidor de desarrollo de Django.

Internacionalización

Django proporciona herramientas de internacionalización y localización.

Cadenas traducibles, formatos de fecha, números, zonas horarias y selección de idioma pueden integrarse directamente en la aplicación.

El sistema se basa especialmente en catálogos de traducción compatibles con GNU gettext.

Comandos y tests

django-admin y manage.py proporcionan comandos para crear aplicaciones, aplicar migraciones, iniciar el servidor de desarrollo o realizar diferentes operaciones de mantenimiento.

Los desarrolladores también pueden crear sus propios comandos.

Django integra un framework de tests basado en las herramientas de Python y proporciona clientes para probar vistas, formularios y comportamiento HTTP.

Casos de uso

Construir una aplicación empresarial

El ORM, los formularios, la autenticación y la administración resultan adecuados para aplicaciones con cuentas de usuario, datos estructurados y workflows internos.

Django permite disponer rápidamente de una base coherente antes de desarrollar las reglas propias del producto.

Crear un CMS o sitio editorial

Templates, routing, modelos y administración pueden servir como base para sitios que contienen artículos, páginas, categorías o medios.

CMS completos como Wagtail también están construidos sobre Django.

Desarrollar un backend Web

Django puede proporcionar autenticación, lógica de negocio y acceso a datos para una interfaz independiente.

Para construir una API REST importante, suele combinarse con Django REST Framework u otra biblioteca especializada.

Construir una plataforma SaaS

Gestión de usuarios, permisos, sesiones, base de datos y arquitectura modular permiten desarrollar dashboards, áreas de clientes o aplicaciones por suscripción.

Los servicios externos necesarios para el producto pueden integrarse mediante las bibliotecas Python correspondientes.

Desarrollar un proyecto que necesita administración interna

La administración automática constituye uno de los puntos fuertes históricos de Django.

Permite proporcionar rápidamente a los equipos una herramienta para consultar y modificar los datos sin construir inmediatamente un back office completamente personalizado.

Conclusión

Django propone un enfoque completo y estructurado del desarrollo Web con Python.

ORM, migraciones, routing, templates, formularios, autenticación, administración y seguridad forman un conjunto coherente que cubre gran parte de las necesidades de una aplicación clásica.

El framework también puede evolucionar hacia arquitecturas modernas gracias a ASGI y sus API asíncronas, manteniendo al mismo tiempo compatibilidad con aplicaciones WSGI tradicionales.

Esta riqueza implica más convenciones que un micro-framework, pero a cambio reduce el número de decisiones y dependencias necesarias al iniciar un proyecto.

Para construir aplicaciones Web Python estructuradas, mantenibles y ricas en funcionalidades, Django sigue siendo uno de los principales frameworks del ecosistema Python.

Puntos de atención

  • Django 6.1.1 es la última versión oficial a 3 de octubre de 2026.

  • Django 6.1 admite Python 3.12, 3.13 y 3.14. Solo la última versión micro de cada rama Python está oficialmente soportada.

  • Django 5.2 es una versión LTS, con soporte de seguridad extendido hasta abril de 2028. Sigue siendo adecuada para proyectos que priorizan un ciclo de actualización más largo.

  • Django 6.0 ya no se encuentra en soporte principal desde la salida de Django 6.1, pero continúa recibiendo correcciones de seguridad y pérdida de datos hasta abril de 2027.

  • Django es gratuito y open source bajo licencia BSD, incluido para uso comercial.

  • PostgreSQL está recomendado por la documentación para producción, aunque otros motores de base de datos están oficialmente soportados.

  • Una API REST completa no está incluida directamente en Django. Django REST Framework y otras bibliotecas pueden completar el framework para esta necesidad.

  • El servidor proporcionado por runserver está destinado al desarrollo. Una aplicación de producción debe utilizar una infraestructura WSGI o ASGI adecuada.

  • El soporte asíncrono es importante, pero no todas las operaciones son necesariamente async-native. Algunas bibliotecas o partes del código todavía pueden requerir una adaptación síncrona.

  • La administración de Django no está destinada por defecto a usuarios públicos. Debe permanecer protegida y reservada a usuarios autorizados.

  • Las migraciones y actualizaciones deben probarse antes del despliegue. Las nuevas versiones de Django pueden eliminar API que hayan llegado al final de su ciclo de deprecación.

  • Las correcciones de seguridad deben aplicarse rápidamente. El proyecto Django publica regularmente versiones correctivas para las ramas que siguen teniendo soporte.