Certificado de Django Templates

10h 0m

Domina Django templates y crea aplicaciones full stack en Python con este itinerario completo para desarrollo web backend eficiente.

Empezar curso

Django es un framework de desarrollo web de alto nivel escrito en Python que permite crear aplicaciones web robustas y escalables de manera eficiente. Desarrollado inicialmente para gestionar sitios web de noticias, Django se ha convertido en una de las herramientas más populares para el desarrollo web backend, utilizada por empresas como Instagram, Pinterest y Mozilla.

¿Qué es Django y por qué utilizarlo?

Django sigue el patrón arquitectónico Model-View-Template (MVT), una variación del conocido patrón MVC que separa la lógica de negocio, la presentación y el manejo de datos. Esta separación permite desarrollar aplicaciones mantenibles y escalables.

El framework se basa en el principio "Don't Repeat Yourself" (DRY), promoviendo la reutilización de código y reduciendo la redundancia. Además, incluye un sistema de administración automático que genera interfaces de gestión para los modelos de datos sin necesidad de código adicional.

# Ejemplo básico de un modelo Django
from django.db import models

class Libro(models.Model):
    titulo = models.CharField(max_length=200)
    autor = models.CharField(max_length=100)
    fecha_publicacion = models.DateField()
    isbn = models.CharField(max_length=13, unique=True)
    
    def __str__(self):
        return self.titulo

Arquitectura y componentes fundamentales

La arquitectura MVT de Django organiza el código en tres componentes principales que trabajan de forma coordinada:

Models (Modelos) representan la estructura de datos y la lógica de negocio. Cada modelo es una clase Python que hereda de django.db.models.Model y define los campos y comportamientos de los datos. Django utiliza estos modelos para generar automáticamente las tablas de la base de datos y proporciona un ORM (Object-Relational Mapping) que permite interactuar con la base de datos usando código Python en lugar de SQL.

# Modelo con relaciones
class Autor(models.Model):
    nombre = models.CharField(max_length=100)
    email = models.EmailField()

class Libro(models.Model):
    titulo = models.CharField(max_length=200)
    autor = models.ForeignKey(Autor, on_delete=models.CASCADE)
    categorias = models.ManyToManyField('Categoria')

Views (Vistas) contienen la lógica de procesamiento de las peticiones HTTP. Reciben las solicitudes del usuario, procesan los datos necesarios (generalmente consultando los modelos) y devuelven una respuesta. Django ofrece tanto vistas basadas en funciones como vistas basadas en clases, proporcionando flexibilidad según las necesidades del proyecto.

Templates (Plantillas) definen la presentación de los datos utilizando el Django Template Language (DTL). Este sistema de plantillas permite separar completamente el diseño HTML de la lógica Python, facilitando la colaboración entre desarrolladores y diseñadores.

<!-- Ejemplo de plantilla Django -->
<h1>{{ libro.titulo }}</h1>
<p>Autor: {{ libro.autor.nombre }}</p>
<p>Publicado: {{ libro.fecha_publicacion|date:"d/m/Y" }}</p>

Sistema de enrutamiento y URLs

El sistema de enrutamiento de Django utiliza expresiones regulares y patrones de URL para dirigir las peticiones HTTP hacia las vistas correspondientes. Este sistema es altamente flexible y permite crear URLs limpias y semánticamente significativas.

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.lista_libros, name='lista_libros'),
    path('libro/<int:id>/', views.detalle_libro, name='detalle_libro'),
    path('autor/<slug:slug>/', views.perfil_autor, name='perfil_autor'),
]

El enrutamiento en Django sigue un patrón jerárquico donde el archivo urls.py principal del proyecto puede incluir archivos de URLs de aplicaciones específicas, manteniendo la organización y modularidad del código.

Gestión de bases de datos y ORM

Django incluye un ORM robusto que abstrae las operaciones de base de datos, permitiendo trabajar con diferentes motores como PostgreSQL, MySQL, SQLite y Oracle sin cambiar el código Python. El ORM traduce automáticamente las operaciones Python en consultas SQL optimizadas.

# Operaciones básicas con el ORM
# Crear un nuevo libro
libro = Libro.objects.create(
    titulo="Django para Desarrolladores",
    autor=autor_obj,
    fecha_publicacion="2024-01-15"
)

# Consultar libros
libros_recientes = Libro.objects.filter(
    fecha_publicacion__year=2024
).order_by('-fecha_publicacion')

# Actualizar un libro
Libro.objects.filter(id=1).update(titulo="Nuevo Título")

El sistema de migraciones de Django gestiona automáticamente los cambios en la estructura de la base de datos. Cuando se modifican los modelos, Django genera archivos de migración que describen los cambios necesarios y pueden aplicarse a la base de datos de forma controlada y reversible.

Formularios y validación de datos

Django proporciona un sistema integral para el manejo de formularios que incluye validación automática, renderizado HTML y protección contra ataques comunes como CSRF. El framework ofrece dos tipos principales de formularios: Form para formularios personalizados y ModelForm para formularios basados directamente en modelos.

# Formulario basado en modelo
from django import forms
from .models import Libro

class LibroForm(forms.ModelForm):
    class Meta:
        model = Libro
        fields = ['titulo', 'autor', 'fecha_publicacion']
        widgets = {
            'fecha_publicacion': forms.DateInput(attrs={'type': 'date'}),
            'titulo': forms.TextInput(attrs={'class': 'form-control'})
        }
    
    def clean_titulo(self):
        titulo = self.cleaned_data['titulo']
        if len(titulo) < 3:
            raise forms.ValidationError("El título debe tener al menos 3 caracteres")
        return titulo

Middleware y procesamiento de peticiones

Los middlewares en Django son componentes que procesan las peticiones y respuestas de forma global, ejecutándose antes y después de las vistas. Django incluye middlewares para funcionalidades como autenticación, manejo de sesiones, protección CSRF y compresión de respuestas.

# Middleware personalizado
class LoggingMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # Código antes de la vista
        print(f"Petición a: {request.path}")
        
        response = self.get_response(request)
        
        # Código después de la vista
        print(f"Respuesta: {response.status_code}")
        return response

Manejo de archivos estáticos y multimedia

Django distingue entre archivos estáticos (CSS, JavaScript, imágenes del diseño) y archivos multimedia (contenido subido por usuarios). El framework proporciona herramientas para gestionar ambos tipos de archivos de manera eficiente, incluyendo sistemas de almacenamiento personalizables y optimización para producción.

# Modelo con campo de archivo
class Documento(models.Model):
    titulo = models.CharField(max_length=100)
    archivo = models.FileField(upload_to='documentos/')
    imagen = models.ImageField(upload_to='imagenes/', blank=True)
    fecha_subida = models.DateTimeField(auto_now_add=True)

Seguridad integrada

Django incluye protecciones de seguridad por defecto contra las vulnerabilidades web más comunes. El framework protege automáticamente contra ataques de inyección SQL mediante el uso del ORM, incluye protección CSRF en formularios, previene ataques XSS escapando automáticamente las variables en plantillas, y proporciona herramientas para implementar autenticación y autorización robustas.

La configuración de seguridad se gestiona a través del archivo settings.py, donde se pueden definir claves secretas, configurar HTTPS, establecer políticas de cookies seguras y configurar cabeceras de seguridad HTTP.

Entorno de desarrollo y herramientas

Django se desarrolla típicamente utilizando entornos virtuales que aíslan las dependencias del proyecto. El framework incluye un servidor de desarrollo integrado que facilita las pruebas locales y recarga automáticamente el código cuando detecta cambios.

# Configuración básica del entorno
python -m venv django_env
source django_env/bin/activate  # En Linux/Mac
django_env\Scripts\activate     # En Windows

pip install django
django-admin startproject mi_proyecto
cd mi_proyecto
python manage.py runserver

El comando manage.py proporciona una interfaz de línea de comandos para tareas comunes como crear aplicaciones, ejecutar migraciones, recopilar archivos estáticos y crear usuarios administradores.

Escalabilidad y despliegue

Django está diseñado para aplicaciones escalables y se puede desplegar en diversos entornos, desde servidores compartidos hasta infraestructuras en la nube. El framework soporta configuraciones de base de datos distribuidas, caché avanzado, y se integra bien con servidores web como Apache y Nginx.

La separación de configuraciones entre desarrollo, pruebas y producción se gestiona mediante variables de entorno y archivos de configuración específicos, permitiendo mantener la seguridad y flexibilidad en diferentes entornos de despliegue.

Empezar curso

Otros cursos de programación con certificado

Supera todos los retos de Django Templates y obtén estos certificados de superación para mejorar tu currículum y tu empleabilidad.

Tecnologías que aprenderás

Django Templates

Al finalizar este curso obtendrás

Certificado de superación en Django Templates

Certificado de superación en Django Templates

Tras completar todas las lecciones y ejercicios del curso Django Templates se te genera un enlace con tu certificado para que lo puedas descargar o compartir directamente en cualquier plataforma, siempre accesible.

Accede a todas certificaciones