Django Guía

8. Temas Avanzados y Optimización

Para llevar tus habilidades de Django al nivel profesional, es crucial entender cómo optimizar tus consultas y cómo exponer tu aplicación al mundo a través de APIs.

Optimización de Consultas (Database Performance)

El problema "N+1" es el asesino de rendimiento más común en Django. Ocurre cuando accedes a datos relacionados dentro de un bucle.

Úsalo para relaciones "Uno a Uno" o "Muchos a Uno" (ForeignKey). Realiza un SQL JOIN.

# Malo: N+1 consultas
libros = Libro.objects.all()
for libro in libros:
    print(libro.autor.nombre) # ¡Hace una consulta extra por cada libro!

# Bueno: 1 consulta única
libros = Libro.objects.select_related('autor').all()
for libro in libros:
    print(libro.autor.nombre) # Los datos ya están en memoria

Úsalo para relaciones "Muchos a Muchos" o "Inversas". Hace dos consultas y une los resultados en Python.

# Traer todos los estudiantes y sus cursos eficientemente
estudiantes = Estudiante.objects.prefetch_related('cursos').all()

Django REST Framework (DRF)

Hoy en día, es común que el backend sirva datos JSON para un frontend en React/Vue o una App Móvil. DRF es el estándar para esto.

Serializers

Convierten tus modelos a JSON.

from rest_framework import serializers

class CursoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Curso
        fields = '__all__'

ViewSets

Manejan la lógica CRUD automáticamente.

from rest_framework import viewsets

class CursoViewSet(viewsets.ModelViewSet):
    queryset = Curso.objects.all()
    serializer_class = CursoSerializer

Recursos para Profundizar

  • Django Debug Toolbar: Herramienta indispensable para ver las consultas SQL que hace tu vista.
  • Celery: Para tareas en segundo plano (emails, procesamiento de imágenes).
  • Channels: Para WebSockets y tiempo real.

Volver al índice