Introducción a Django

Django es un framework de aplicaciones web de código abierto escrito en Python.

Con Django, los desarrolladores de Python pueden completar fácilmente la mayor parte de lo necesario para un sitio web formal con muy poco código, y desarrollar aún más servicios web con todas las funciones.

Django proporciona las herramientas necesarias para el desarrollo full-stack, incluyendo ORM de base de datos, motor de plantillas, sistema de enrutamiento, autenticación de usuarios, etc., reduciendo en gran medida el código repetitivo.

La filosofía de Django:

  • DRY(Don't Repeat Yourself):Evitar código repetido, promover la reutilización (como la herencia de plantillas y la herencia de modelos).
  • Convención sobre configuración:Proporciona configuraciones razonables por defecto (como la generación automática de la interfaz Admin), reduciendo el coste de decisiones.
  • Desarrollo rápido:Se puede avanzar eficientemente desde el prototipo hasta el entorno de producción.

Django sigue la arquitectura MVC (Model-View-Controller), pero en Django se la denomina más a menudo MTV (Model-Template-View).

Funciones integradas

FunciónDescripción
Panel de administración (Admin)Genera automáticamente la interfaz de administración, sin necesidad de escribir manualmente la lógica CRUD.
ORMUtiliza clases de Python para operar la base de datos, sin necesidad de escribir SQL.
Procesamiento de formulariosValidación de formularios integrada, previene ataques CSRF.
Autenticación de usuariosProporciona inicio de sesión, registro, gestión de permisos (django.contrib.auth)。
Sistema de enrutamientoMapeo de URL flexible, soporta expresiones regulares.
Mecanismo de cachéSoporta backends como Memcached, Redis, etc.

Características principales

  • Desarrollo rápido:Django proporciona una gran cantidad de funciones integradas, como autenticación, panel de administración, procesamiento de formularios, etc., lo que permite a los desarrolladores centrarse en la lógica de negocio, no en la implementación de bajo nivel.
  • Panel de administración automatizado:Con solo una simple definición de modelos, se puede generar un potente panel de administración que soporta altas, bajas, modificaciones y consultas.
  • Mapeo de base de datos ORM:Django incluye ORM (Object-Relational Mapping), que permite a los desarrolladores interactuar con la base de datos usando clases de Python, sin necesidad de escribir SQL.
  • Potente enrutamiento de URL:Usa expresiones regulares para definir URL de forma flexible, facilitando el enrutamiento de páginas.
  • Motor de plantillas:Incluye un potente sistema de plantillas que soporta condicionales lógicos y bucles, facilitando el renderizado de páginas HTML.
  • Soporte de internacionalización:Django soporta internacionalización multilingüe, muy adecuado para aplicaciones globales.
  • Alta seguridad:Incluye múltiples medidas de protección de seguridad, como prevención de inyección SQL, ataques XSS, ataques CSRF, etc.
  • Amplia comunidad y extensiones:Gran cantidad de bibliotecas de terceros de código abierto, como Django REST framework, Django CMS, etc., para ampliar funciones rápidamente.

Modelos MVC y MTV

MVC (Model-View-Controller)

  • Model (Modelo): maneja la interacción con la base de datos, define la estructura de los datos y la lógica de negocio.

  • View (Vista): se encarga de la presentación de datos, generando las páginas HTML que ve el usuario.

  • Controller (Controlador): recibe las solicitudes del usuario, llama al Model para procesar los datos y pasa el resultado a la View para renderizar la página.

Proceso:

  1. El usuario envía una solicitud al Controller.

  2. El Controller procesa la lógica y llama al Model para obtener datos.

  3. El Controller pasa los datos a la View.

  4. La View renderiza y devuelve la página HTML al usuario.

MVT (Model-Template-View) — la implementación de Django

Django adopta elMVTpatrón de diseño, similar a MVC, pero con algunas diferencias:

  • Model (Modelo): interactúa con la base de datos, maneja la creación, lectura, actualización y eliminación de datos.

  • Template (Plantilla): se encarga del renderizado de la página, generando el contenido HTML final.

  • View (Vista): la View de Django se inclina más hacia el papel de controlador, recibe las solicitudes y decide qué plantilla y datos usar.

Proceso:

  1. El usuario visita la URL, la solicitud es manejada por Djangourls.pymapeada a la View correspondiente.

  2. La View procesa la lógica de negocio, llama al Model para obtener datos.

  3. La View pasa los datos a la Template.

  4. La Template renderiza el HTML y lo devuelve finalmente al usuario.


Casos de uso de Django

Proyectos adecuados para Django:

  • ✅ Sistema de gestión de contenidos (CMS) (como sitios de noticias, blogs)
  • ✅ Plataformas sociales (sistema de usuarios, publicación de novedades)
  • ✅ Sitios de comercio electrónico (gestión de pedidos, integración de pagos)
  • ✅ Backend de API (combinado con Django REST framework)

Escenarios no adecuados:

  • ❌ Sistemas en tiempo real con requisitos de altísimo rendimiento (como plataformas de trading de alta frecuencia, se recomienda Go o Rust)
  • ❌ Microservicios extremadamente ligeros (se puede considerar Flask o FastAPI)

Django vs otros frameworks

FrameworkCaracterísticas
FlaskLigero, flexible, adecuado para proyectos pequeños o microservicios.
FastAPIFuerte soporte asíncrono, adecuado para desarrollo de API de alto rendimiento.
Ruby on RailsSimilar a Django, pero usa el lenguaje Ruby.
LaravelFramework MVC del ecosistema PHP, con funciones similares a Django.

Ventajas de Django:

  • "Listo para usar": se pueden implementar funciones completas sin necesidad de instalar complementos adicionales.
  • Seguridad: previene automáticamente ataques comunes como inyección SQL, XSS, CSRF, etc.
  • Comunidad activa: amplia variedad de bibliotecas de terceros (como Django REST framework, Django CMS).
Otras extensiones