Posts Tagged ‘ desarrollo software ’

Django: Don’t Repeat Yourself

Django es un framework para desarrollo web de código abierto, escrito en el lenguaje Python, que se basa en el paradigma del Modelo Vista Controlador (MVC) de una manera un tanto peculiar.

Su meta fundamental es facilitar la creación de sitios webs con una complejidad media/alta. Hace hincapié en el re-uso, la conectividad y la extensibilidad de componentes (módulos, para que nos entendamos), el desarrollo rápido y sobre todo, en el principio DRY: Don’t Repeat Yourself (también conocido como Once and Only Once) que creo que no hace falta explicar lo que significa. Django usa Python para todo, tanto en configuraciones como en archivos o en modelos de datos.

Como hemos dicho, Django usa una versión particular del MVC, ya que al Controlador, lo llama Vista, y a la Vista, Plantilla. ¿Por qué?

La respuesta es sencilla, porque Django no se desarrolló para seguir este modelo, pero (casualmente) lo implemente casi a la perfección. Para Django la Vista no es «cómo» se representan los datos, sino «qué» datos se representa. El «cómo» es trabajo de las Plantillas. El trabajo del Controlador lo realiza el mismo framework, ya que es el encargado de procesar las peticiones y los eventos que se producen.

Más características de Django son:

  • Soporte para base de datos (mapeador objeto-relacional y API)
  • Soporte para PostgreSQL, MySQL, Oracle o SQLite.
  • Aplicaciones independientes del proyecto que pueden instalarse en cualquier web con Django.
  • Un sistema incorporado de «vistas genéricas» que ahorra mucho trabajo.
  • Un sistema de plantillas basado en etiquetas.
  • Un dispensador de URL basado en expresiones regulares.
  • Un middleware para caché, sesiones y protección de datos.
  • Soporte de internacionalización.
  • Sistema de documentación incorporada.

Comentar por último que a la hora de hacerlo correr en un servidor web, se recomienda usar Apache 2 con mod_python.

Postdata: Os dejo direcciones por si queréis informaros más:

Modelo Vista Controlador

El Modelo Vista Controlador es un patrón para el desarrollo del software que se basa en separar los datos (por un lado), la interfaz del usuario (por otro) y la lógica interna (por un último lado). Es mayormente usado en aplicaciones web, dónde la vista es la página HTML, el modelo es el Sistema de Gestión de Base de Datos y la lógica interna, y el controlador es el responsable de recibir los eventos y darles solución.

A continuación vamos a desgranar más cada elemento:

  • Modelo: Es la representación de la información en el sistema. Trabaja junto a la vista para mostrar la información al usuario y es accedido por el controlador para añadir, eliminar, consultar o actualizar datos.
  • Vista: Es la presenta al modelo en un formato adecuado para que el usuario pueda interactuar con él, casi siempre es la interfaz de usuario.
  • Controlador: Es el elemento más abstracto. Recibe, trata y responde los eventos enviados por el usuario o por la propia aplicación. Interactua tanto con el modelo como con la vista.

    Modelo Vista Controlador

Para entender mejor el uso del modelo MVC vamos a ver su flujo de control:

  1. El usuario activa un evento en la interfaz (botón, enlace, etc.)
  2. El controlador recibe el evento y lo gestiona.
  3. El controlador consulta o modifica el modelo.
  4. El controlador manda la respuesta a la interfaz y esta reacciona en función de esta (cambia de pantalla, abre un enlace, etc.)
  5. La interfaz espera una nueva acción del usuario.

Una vez queda claro el funcionamiento del modelo, vamos a ver quién y cómo lo utiliza.

Existen multitud de frameworks que usan este modelo, entre los más destacados están:

  • Cocoa, escrito en Objetive C (usado en Mac OS X)
  • Ruby On Rails, escrito en Ruby.
  • Struts o Spring, escritos en Java.
  • Catalyst, escrito en Perl.
  • Symfony o Zend, escritos en PHP.
  • Django o Pylons, escritos en Python.

Yo, personalmente, sólo he trabajado con PHP, más concretamente CodeIgniter, (es lo que me han «enseñado» en la facultad) y ahora mismo que estoy aprendiendo a usar Django. Personalmente, me parece mucho más fácil de usar Django que , ya que no fui capaz de usar fluidamente PHP en todo un curso y con Python/Django llevo apenas tres meses de forma autodidacta y más o menos hago mis pinitos.