Introducción a Django

Objetivo de aprendizaje: Al finalizar este módulo, entenderás qué es Django, sus características principales y por qué es tan popular en el desarrollo web.

Django es un framework web de alto nivel que fomenta el desarrollo rápido y limpio, con un diseño pragmático. Desarrollado por programadores experimentados, Django se encarga de gran parte de las complicaciones del desarrollo web, para que puedas enfocarte en escribir tu aplicación sin necesidad de reinventar la rueda.

Características principales
  • Rapidez: Django fue diseñado para ayudar a los desarrolladores a llevar aplicaciones de la idea a la finalización lo más rápido posible.
  • Seguridad: Django ayuda a los desarrolladores a evitar errores comunes de seguridad.
  • Escalabilidad: Django puede manejar sitios con alto tráfico.
  • Versatilidad: Compañías, organizaciones y gobiernos han usado Django para construir todo tipo de aplicaciones.
Historia de Django

Django fue creado entre 2003 y 2005 por la web team del periódico Lawrence Journal-World en Kansas, USA. Inicialmente, el framework se llamó "Django" en honor al guitarrista de jazz Django Reinhardt.

En 2005 fue liberado bajo licencia BSD, y para 2008 se formó la Django Software Foundation para mantener el proyecto.

¿Por qué elegir Django?

Django ofrece ventajas significativas cuando necesitas:

  • Desarrollar aplicaciones web rápidamente
  • Trabajar con bases de datos relacionales
  • Manejar autenticación y autorización
  • Implementar un panel de administración
  • Implementar formularios y validación
  • Manejar archivos estáticos (CSS, JS, imágenes)
  • Integrar sistemas de caché
  • Construir APIs RESTful
Dato interesante: Instagram, Pinterest, Dropbox, NASA, Mozilla, y The Washington Post son algunos proyectos que utilizan Django como parte de su infraestructura.

Instalación y configuración

Antes de instalar Django 5, es importante contar con los requisitos previos:

Requisitos previos:
  • Python 3.10 o superior
  • pip (gestor de paquetes de Python)
  • Entorno virtual (recomendado)

Paso 1: Verificar Python

Primero, asegúrate de tener instalada la versión correcta de Python:

python --version
# o en algunos sistemas:
python3 --version

Paso 2: Crear un entorno virtual

Es recomendable aislar tus proyectos en entornos virtuales:

# En Windows
python -m venv myenv

# En macOS/Linux
python3 -m venv myenv

Paso 3: Activar el entorno virtual

# En Windows
myenv\Scripts\activate

# En macOS/Linux
source myenv/bin/activate

Paso 4: Instalar Django 5

Con el entorno virtual activo, instala Django 5:

pip install django

Paso 5: Verificar la instalación

Confirma que Django se ha instalado correctamente:

python -c "import django; print(django.get_version())"

Si aparece la versión 5.x.x, ¡felicidades! Has instalado Django 5 correctamente.

Ejercicio Interactivo: Configura tu entorno Django

Intenta completar estos comandos para configurar tu entorno de desarrollo Django:

Crea un entorno virtual llamado "django_env":

Activa el entorno virtual (en Windows):

Instala Django:

Estructura de un proyecto Django

Cuando creas un proyecto Django, se genera una estructura de archivos específica. Vamos a ver cómo se crea un proyecto y qué significa cada parte.

Crear un nuevo proyecto

Para crear un nuevo proyecto Django, usa el siguiente comando:

django-admin startproject mi_proyecto

Esto generará la siguiente estructura de archivos:

mi_proyecto/
    manage.py
    mi_proyecto/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

Descripción de los archivos

Archivo Descripción
manage.py Una utilidad de línea de comandos que te permite interactuar con tu proyecto Django de varias formas.
__init__.py Un archivo vacío que le dice a Python que este directorio debe ser considerado un paquete.
settings.py Configuraciones para el proyecto Django. Aquí es donde registras las aplicaciones, configuras la base de datos, etc.
urls.py Las declaraciones de URLs para el proyecto; una "tabla de contenidos" de tu sitio Django.
asgi.py Un punto de entrada para servidores web compatibles con ASGI para servir tu proyecto.
wsgi.py Un punto de entrada para servidores web compatibles con WSGI para servir tu proyecto.

Crear una aplicación

En Django, un proyecto puede contener múltiples aplicaciones. Cada aplicación es un módulo de Python que sigue una convención y proporciona un conjunto específico de características.

python manage.py startapp mi_aplicacion

Esto generará la siguiente estructura:

mi_aplicacion/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
Buena práctica: Es recomendable dividir tu proyecto en aplicaciones según la funcionalidad. Por ejemplo, en un blog podrías tener aplicaciones separadas para posts, comentarios, usuarios, etc.

Patrón MVC vs MVT

Django sigue un patrón arquitectónico similar al MVC (Modelo-Vista-Controlador), pero con una terminología ligeramente diferente, conocida como MVT (Modelo-Vista-Template).

Patrón MVC
  • Modelo: Gestiona los datos y la lógica de negocio
  • Vista: Renderiza la interfaz de usuario
  • Controlador: Maneja las solicitudes del usuario y orquesta la interacción entre el modelo y la vista
Patrón MVT en Django
  • Modelo: Similar al modelo en MVC, define la estructura de datos
  • Vista: Similar al controlador en MVC, procesa las solicitudes y devuelve respuestas
  • Template: Similar a la vista en MVC, define cómo se muestran los datos al usuario

Flujo de una solicitud en Django

Cuando un usuario hace una solicitud a una aplicación Django, ocurre el siguiente proceso:

  1. URLs (urls.py): Django determina qué vista debe procesar la solicitud basándose en la URL.
  2. Vista (views.py): La vista procesa la solicitud, interactúa con el modelo si es necesario, y prepara los datos para la template.
  3. Modelo (models.py): Define la estructura de los datos y proporciona métodos para acceder y manipular esos datos.
  4. Template (archivos .html): Recibe los datos de la vista y los presenta de forma visualmente agradable para el usuario.
Flujo MVT en Django

Imagen: Flujo del patrón MVT en Django

Ejercicio práctico

Tarea: Crear tu primer proyecto Django y ejecutar el servidor de desarrollo.
Paso 1: Crear un entorno virtual
# Crear un entorno virtual
python -m venv django_tutorial

# Activar el entorno virtual
# En Windows:
django_tutorial\Scripts\activate
# En macOS/Linux:
source django_tutorial/bin/activate
Paso 2: Instalar Django
pip install django
Paso 3: Crear un proyecto
django-admin startproject mi_primer_proyecto
Paso 4: Navegar al directorio del proyecto
cd mi_primer_proyecto
Paso 5: Ejecutar el servidor de desarrollo
python manage.py runserver

Si todo ha ido bien, podrás acceder a tu proyecto Django en http://127.0.0.1:8000/ y ver la página de bienvenida de Django.

¿Qué estamos viendo?

La página de bienvenida confirma que tu instalación de Django funciona correctamente. Es una página que Django muestra automáticamente cuando no has definido ninguna vista para la URL raíz de tu proyecto.

Consejo: No detengas el servidor con Ctrl+C todavía. Django tiene recarga automática, lo que significa que mientras el servidor está en ejecución, cualquier cambio que hagas en el código se reflejará automáticamente sin tener que reiniciar el servidor.

Quiz: Introducción a Django

Comprueba tus conocimientos sobre este módulo respondiendo las siguientes preguntas:

1. ¿En qué lenguaje de programación está escrito Django?

2. ¿Qué comando se utiliza para crear un nuevo proyecto Django?

3. ¿Qué patrón arquitectónico utiliza Django?

4. ¿Cuál es la versión mínima de Python requerida para Django 5?

5. ¿Qué archivo se utiliza para definir la configuración de un proyecto Django?