No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Patrones de diseño y Django

10/37
Recursos

Un patrón de diseño, en términos generales, es una solución reutilizable a un problema común.
El patrón más común para el desarrollo web es MVC (Model, View, Controller). Django implementa un patrón similar llamado MTV (Model, Template, View).

Aportes 40

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Modelo:
models.py: Son los modelos dentro de nuestra aplicación.

Controlador:
urls.py: Maneja la parte de rutas.
views.py: Maneja el request de un usuario.

Vista:
(Template) html: Se renderiza a través del sistema de templates de django.

El MVC no es un patrón de diseño, es un patrón de arquitectura.

Model

 
Es la forma en la que creamos esquemas de objetos (un usuario, un post, etc) para representarlos en nuestra base de datos.
 
El modelo sin importar nuestro sistema ge BD (mysql, postgress, etc) nos ayudara a crear esta entidad a través de un OMR, esto nos ahorra la molestia de tener que escribir las sentencias de SQL para crear las tablas y atributos.
 

Template

 
Es el encargado de manejar la lógica y sintaxis de la información que se va a presentar en el cliente, el sistema de templates de django usa HTML para ello.
 

View

 
Su función es solo suministrar datos al template
 
Manda la información necesaria el template para que este pueda manejar los datos y presentarlos de una manera correcta.

Siento que esta clase debería estar una antes que la de templates.

Yo entiendo como patrones de diseño algo diferente, basandome en el libro Uml y Patrones de Craig Larman. Yo los llamaría más bien patrones arquitecturales.

Lamentablemente el profesor está confundiendo conceptos: el MVC o MVT son patrones de arquitectura, que es a términos generales en cuanto al desarrollo de un sistema.
Si queremos ver patrones de diseño, que en efecto son soluciones a problemas comunes, les recomiendo esta serie donde se explican muy bien los conceptos:
https://www.youtube.com/watch?v=3qTmBcxGlWk

Hola, les dejo mi resumen. Por favor ayúdenme a mejorarlo.😃
Saludos

Muy buena la clase y el profe explica excelente.
Solo una observación que veo que ya varios han hecho en los comentarios.
Si queremos comparar MTP, con MVC es erróneo utilizar el nombre de Patron de diseño, ya que MVC no es un Patrón de diseño, sino un Patrón de arquitectura.
Si habláramos de Patrones de diseño en tal caso podríamos hablar del Patrón Observer que es la clave del patrón de arquitectura MVC. Les comparto la información de la Wikipedia en la que me baso:
Modelo–vista–controlador
Observer (patrón de diseño)
Django (framework) - Sección: Otros aspectos - Inconsistencias entre la nomenclatura Django y el patrón MVC

Que cool quedo la parte de platzigram

Buen día,

Modelo-vista-controlador es un patrón de arquitectura de software.

interesante conocer todo el mundo de patrones de diseño

Controller, maneja la lógica del request, entiende qué hacer para mostrar el template, cambiando los datos a través del modelo, ,el modelo se encarga de definir la estructura de los datos, su acceso y validación. La vista se encarga de cómo presentar estos datos, que son mostrados al usuario.

separar los Datos de la presentación y de la lógica, es el motivo del MVC

El problema es: ¿Cómo muestras, traes y actualizas los datos? Bueno para ello, existen los patrones de diseño. Que en una definición general, son soluciones reutilizables a un problema en común.

No podemos tener conexión a la base datos, presentación de los datos y la lógica para presentar los datos.

En PHP, tenemos que se combina la lógica del lenguaje, con la presentación en HTML. Caso que también vemos en los CGI scripts, en dónde toda una sentencia, escribe toda la respuesta en HTML, enserio, toda la página que chucha.

Django utiliza el patrón de diseño, model view controller, para reemplazar los CGI scripts, de los que podríamos decir, son muy mala práctica. Django adapta este concepto en MTV, Model Template View.

que bieen, veee, había escuchado de mvc, vamos a ver como nos va

Template system de Django es una manera de presentar los datos usando HTML, está inspirado en Jinja2 y su sintaxis, por lo cual comparte muchas similitudes. Permite incluir alguna lógica de programación.

Excelente … refrescando conocimientos adquiridos hace un tiempo

reaprendiendo MVC, que recuerdos cuando empecé a conocer este patrón con angular.js

me gusta, vengo de trabajar laravel por años pero django me esta gustando

mvc y mtv basicamente lo mismo con nombre diferente, vamos a ver como se usa.

Patrón de diseño: Solución reutilizable a un problema común.

Investigue un poco de MTV y al parecer solo Django maneja ese patrón de diseño, saben si se aplica en otros frameworks?

Yo tengo varias vistas como un login y un crud hecho en html, css y js. No entiendo como unirlo al django. Porque la estructura que usas es diferente a la de html de toda la vida.

La documentación oficial menciona esto, a cerca de MTV y MVC:

Al final del día, todo se reduce a hacer las cosas. E, independientemente de cómo se llamen las cosas, Django hace las cosas de la manera más lógica para nosotros.

Contexto

  • Esto es un ejemplo de mezclas responsabilidades, cosa que no se debería hacer.

    En el caso anterior, si observas bien el código y los posts vinieran de la base de datos estariamos haciendo todo esto en el mismo lugar:

    • Hacer la conexión a la base de datos (el modelo)
    • Estructurar el contenido que queremos renderizar del modelo (la vista)
    • Construir el template para renderear (template)
    • Renderearlo

Al realizar una aplicación debemos aislar la forma de:

  • Traer los datos
  • Actualizar los datos
  • Estructurar los datos
  • Presentar los datos

Apuntes claves

¿Qué diablos son los patrones de diseño?

Para problemas como los anteriores existen los patrones de diseño.

Un patrón de diseño es una solución reutilizable para un problema común, El patrón de diseño más común para el desarrollo web es el Model View Controller

El Controller maneja la lógica del request, sabe que hacer con él, y que template debe mostrar.

El modelo define la estructura de los datos, el acceso a ellos e incluso la validación

La vista se encarga de definir como se van a presentar los datos al usuario

Django implementa algo similar llamado el Model View Template

¿Qué resuelven los patrones de diseño?

Cualquier problema lo suficientemente genérico.

Los patrones de diseño en el caso de Django

El patrón de diseño más común es el Model View Controller , sin embargo, en el caso de Django el enfoque utilizado es el del Model View Template .

  • Model define la estructura de los datos.
  • El Template es la lógica de presentación de los datos
  • El View es el encargado de traer los datos y pasarlos al template.

Conclusión

Es acertado, aunque quizá no preciso, en decir que Django aplica una especie de Modelo Vista Controlador y que a través de esto podemos generar un desarrollo web previsible y escalable.

El controller, maneja la lógica, igual que las vistas en Django, el model se encarga de definir la estructura de los datos, su accesibilidad y su autenticación, parecido a las vistas de Django. Luego la vista de encarga de presentar los datos en la interfaz. parecido a los templates.

Model Template View, es en Django, la estructura del Model, en la que define la estructara de los datos, es el Template, que hace la presentación de los datos, y el view que se encarga de traer los datos para pasarlos al template.

El Model View Controller, separa la vista o presentación, de la lógica y la lógica de los datos.

MTV Django:

Patrones de diseño: Una solución reutilizable a un problema común

Esos ejemplos de PHP son muy antiguos ya no es asi, ejemplo Laravel tiene sus patrones

Un poco nervioso el tipo.

excelente

Django tiene su propio patron de diseño inspirado en MVC (modelo, vista controlador) implementando un MTV (Modelo, Template, View)
El modelo se encarga de hacer una represntacion de los datos en base de datos de los campos a utilizar en el template.
El Template: Se defininen los campos que se mostrarán en Views.
El View: Toma el template y lo muestra al usuario, captura los datos y los devuelve al template para almacenar en el modelo.

MVC = MODEL VIEW CONTROLLER
MTV = MODEL TEMPLATE VIEW