Semana Anterior Semana Siguiente

Semana 12

Desarrollo de un Sistema Web Backend con Django

Temas Aprendidos

Gestión de Formularios Django Admin Middleware Sesiones y Autenticación Validación y Sanitización Campos Calculados Panel Administrativo Formularios Personalizados

Esta semana profundizamos en el desarrollo backend con Django, enfocándonos en la gestión avanzada de formularios, personalización del panel administrativo y manejo seguro de sesiones. Exploramos la creación de middleware personalizado, validadores de datos y la implementación de sistemas de autenticación robustos. También aprendimos sobre campos calculados y la optimización del Django Admin.

Ejercicios y Resultados

Formulario de Registro con Validación

# forms.py from django import forms from django.contrib.auth.models import User from .models import Perfil, Categoria class RegistroForm(forms.ModelForm): nombre = forms.CharField( max_length=100, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Nombre completo' }) ) email = forms.EmailField( widget=forms.EmailInput(attrs={ 'class': 'form-control', 'placeholder': 'tu@email.com' }) ) class Meta: model = Perfil fields = ['telefono', 'edad', 'categoria', 'mensaje'] def clean_edad(self): edad = self.cleaned_data.get('edad') if edad < 18: raise forms.ValidationError("Debe ser mayor de edad") return edad def clean_email(self): email = self.cleaned_data.get('email') if User.objects.filter(email=email).exists(): raise forms.ValidationError("Este email ya está registrado") return email

Formulario de Registro

Resultado del registro:
Complete el formulario para registrar un usuario

Django Admin Panel Personalizado

# admin.py from django.contrib import admin from .models import Perfil, Categoria @admin.register(Categoria) class CategoriaAdmin(admin.ModelAdmin): list_display = ['nombre', 'descripcion'] search_fields = ['nombre'] @admin.register(Perfil) class PerfilAdmin(admin.ModelAdmin): list_display = ['nombre_completo', 'usuario__email', 'categoria', 'activo', 'fecha_registro'] list_filter = ['categoria', 'activo', 'fecha_registro'] search_fields = ['usuario__first_name', 'usuario__last_name'] readonly_fields = ['fecha_registro'] fieldsets = ( ('Información Personal', { 'fields': ('usuario', 'telefono', 'edad') }), ('Categorización', { 'fields': ('categoria', 'mensaje') }), ) def nombre_completo(self, obj): return obj.nombre_completo nombre_completo.short_description = 'Nombre Completo'

Panel de Administración

Vista del Admin:
Use los filtros para explorar el panel administrativo

Reflexión Final

El desarrollo backend con Django ha elevado significativamente mi comprensión sobre la construcción de aplicaciones web robustas y seguras. La implementación de formularios con validación personalizada, la configuración avanzada del Django Admin y el manejo de middleware me han dado herramientas poderosas para crear sistemas web profesionales y escalables.

¿Qué aprendí?

Aprendí a crear formularios complejos con validación personalizada, configurar el Django Admin para gestión eficiente de datos, implementar middleware para procesamiento de peticiones y manejar sesiones de usuario de forma segura. También comprendí la importancia de la sanitización de datos y la implementación de campos calculados.

¿Cómo aprendí?

Aprendí mediante la implementación práctica de un sistema completo de gestión de usuarios, experimentando con diferentes tipos de formularios, personalizando el panel administrativo y desarrollando middleware personalizado para logging y autenticación.

¿Qué me impresionó más?

Lo que más me impresionó fue la flexibilidad del Django Admin para personalizar completamente la interfaz administrativa sin necesidad de desarrollar una desde cero. La capacidad de crear middleware personalizado también me permitió entender mejor el flujo de peticiones HTTP en Django.