Arquitectura MVT en Proyecto de Blog
Modelo (Capa de Datos)
Gestiona la definición, almacenamiento y consulta de datos mediante modelos:
# Ejemplo de modelo Perfil
class Perfil(models.Model):
nombre = models.CharField('Nombre completo', max_length=50)
especialidad = models.CharField('Área de especialización', max_length=100)
universidad = models.CharField('Institución académica', max_length=100)
biografia = models.TextField('Descripción personal')
habilidades = models.TextField('Competencias técnicas')
enlace_github = models.URLField('Perfil GitHub', blank=True)
Vista (Lógica de Aplicación)
Procesa solicitudes, interactúa con modelos y prepara datos para plantillas:
# Vista de portafolio principal
def portafolio_principal(request):
perfil = Perfil.objects.first()
proyectos = Proyecto.objects.filter(destacado=True)[:3]
notas_recientes = Nota.objects.filter(publicado=True)[:5]
return render(request, 'portafolio/principal.html', {
'perfil': perfil,
'proyectos_destacados': proyectos,
'notas_recientes': notas_recientes
})
Plantilla (Capa de Presentación)
Estructura HTML con sintaxis de plantilas Django:
<!-- plantillas/portafolio/principal.html -->
{% extends 'base.html' %}
{% block contenido %}
<div class="cabecera-perfil">
<h1>{{ perfil.nombre }}</h1>
<p>{{ perfil.universidad }} · {{ perfil.especialidad }}</p>
<div class="habilidades">
{% for habilidad in perfil.habilidades_lista %}
<span class="etiqueta-habilidad">{{ habilidad }}</span>
{% endfor %}
</div>
</div>
{% endblock %}
Módulos Funcionales
| Portafolio | Blog |
|---|---|
| - Presentación personal - Administración de notas - Exposición de proyectos | - Gestión de artículos - Sistema de comentarios - Búsqueda de contenido |
Tecnologías Utilizadas
- Backend: Django 4.0, Python 3.10+
- Base de datos: SQLite/MySQL
- Frontend: HTML5, CSS3, JavaScript
- Motor de búsqueda: Whoosh
Estructura de Directorios
proyecto/
├── aplicacion_blog/
├── portafolio/
│ ├── modelos.py
│ ├── vistas.py
│ └── plantillas/
├── gestion_usuario/
├── configuracion/
│ ├── settings.py
│ └── urls.py
└── static/
Flujo MVT
- Solicitud HTTP recibida
- Enrutamiento a vista correspondiente
- Vista consulta modelos y base de datos
- Datos enviados a plantilla para renderizado
- Respuesta HTML devuelta al cliente
Configuración Inicial
# Migraciones iniciales
python manage.py makemigrations
python manage.py migrate
# Iniciar servidor
python manage.py runserver
Características Destacadas
- Diseño adaptable para múltiples dispositivos
- Interfaz basada en componentes
- Optimización para motores de búsqueda
- Estructura modular extensible