Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

MVC Aspectos clave del desarrollo web en Python

En la lección anterior, llegamos a la siguiente estructura:

# Obtenemos objetos de la base de datos
photos = Photo.objects.all()
# Los pasamos al template
render(request, 'polls/detail.html', {'photos': photos})

En este caso:

  • El modelo del dominio está descrito por ORM (en otros casos esto no es obligatorio, ya que el almacenamiento está separado del modelo).
  • La función controladora se dirige al modelo para realizar las operaciones solicitadas y envía los datos necesarios al template.
  • El template describe la vista de una página específica y se basa en los datos pasados desde la función controladora.

La estructura descrita se llama Model-View-Controller (MVC versión 2). Esta estructura se organiza de la siguiente manera:

  • M — Modelo del dominio
  • V — Template
  • C — Nuestra función controladora (en otros frameworks pueden ser otras entidades)

MVC divide la aplicación al menos en tres capas y define cómo pueden interactuar las capas entre sí. Esto es importante para crear aplicaciones modulares, es decir, aplicaciones que son fáciles de desarrollar y modificar. Sin embargo, nadie prohíbe agregar nuevas capas y dividir las actuales, todo esto depende de la complejidad de la propia aplicación.

MVC puede estar organizada así:

MVC

Vamos a examinar el diagrama con más detalle:

  • M — El núcleo de la aplicación, donde se encuentra la lógica de negocio. M no tiene idea de lo que sucede en otras partes de la app ni puede influir en ellas.
  • V — Recibe datos de C y a veces de M, aunque esto último no es recomendable. Además, V no debería tener acceso a la base de datos. Es común que los desarrolladores principiantes cometan el error de ejecutar consultas SQL directamente desde los templates.
  • C — Utiliza M para ejecutar las acciones necesarias y luego generar la V.

MVC es un patrón arquitectónico o patrón de diseño. Es una construcción arquitectónica repetible que resuelve un problema de diseño dentro de un contexto común. En nuestro caso, el contexto es el manejo de solicitudes HTTP.

Existen muchos patrones de diseño para todas las situaciones posibles. Algunos de ellos son muy simples y se asemejan a idioms, es decir, fragmentos de código que se acostumbra a escribir de cierta manera en un lenguaje específico.

Algunos patrones son omnipresentes, similares a MVC. Definen restricciones globales pero no dicen nada sobre la forma de implementación. En cualquier caso, los patrones no son un dogma ni una especificación formal. Siempre hay espacio para elecciones individuales.

En MVC se introduce una idea bastante simple pero importante: la división de la aplicación en capas con límites claros.

Este enfoque permite desarrollar cada capa independientemente de las demás, siempre que las dependencias entre ellas estén bien organizadas.

Observa que en MVC todas las conexiones son unidireccionales. En otras palabras, en MVC no hay dos capas que sepan una de la otra al mismo tiempo. Si una capa sabe de otra, la segunda no sabe nada de la primera, y viceversa. La modularidad es uno de los factores clave que hacen que las aplicaciones sean verdaderamente de alta calidad desde el punto de vista del desarrollo. Como verás más adelante, muchos frameworks web están construidos exactamente en el modelo MVC con pequeñas modificaciones que no afectan la idea clave.


Materiales adicionales

  1. MVC 📚 Wikipedia

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY