Django

Django

Django

Para otros usos de este término, véase Django (desambiguación).
Django
Django logo.png
Desarrollador
Django Software Foundation
www.djangoproject.com
Información general
Última versión estable 1.1
29 de Julio de 2009
Género Framework Web
Escrito en Python
Sistema operativo Multiplataforma
Licencia BSD License
En español

Django es un framework de desarrollo web de código abierto, escrito en Python, que cumple en cierta medida el paradigma del Modelo Vista Controlador. Fue desarrollado en origen para gestionar varias páginas orientadas a noticias de la World Company de Lawrence, Kansas, y fue liberada al público bajo una licencia BSD en julio de 2005; el framework fue nombrado en alusión al guitarrista de jazz gitano Django Reinhardt En Junio del 2008 fue anunciado que la recién formada Django Software Foundation se hará cargo de Django en el futuro. La versión estable (a julio de 2009) es la 1.1.

La meta fundamental de Django es facilitar la creación de sitios web complejos. Django pone énfasis en el re-uso, la conectividad y extensibilidad de componentes, del desarrollo rápido y del principio de DRY (del inglés Don't Repeat Yourself). Python es usado en todas las partes del framework, incluso en configuraciones, archivos, y en los modelos de datos.

Contenido

Visión general y características

Al igual que Ruby on Rails, otro popular framework de código abierto, Django se usó en producción durante un tiempo antes de que se liberara al público; fue desarrollado por Adrian Holovaty, Simon Willison, Jacob Kaplan-Moss y Wilson Miner mientras trabajaban en World Online, y originalmente se utilizó para administrar tres sitios web de noticias: The Lawrence Journal-World, lawrence.com y KUsports.com. Django recibe su nombre del guitarrista de jazz Django Reinhardt.

Los orígenes de Django en la administración de páginas de noticias son evidentes en su diseño, ya que proporciona una serie de características que facilitan el desarrollo rápido de páginas orientadas a contenidos. Por ejemplo, en lugar de requerir que los desarrolladores escriban controladores y vistas para las áreas de administración de la página, Django proporciona una aplicación incorporada para administrar los contenidos, que puede incluirse como parte de cualquier página hecha con Django y que puede administrar varias páginas hechas con Django a partir de una misma instalación; la aplicación administrativa permite la creación, actualización y eliminación de objetos de contenido, llevando un registro de todas las acciones realizadas sobre cada uno, y proporciona una interfaz para administrar los usuarios y los grupos de usuarios (incluyendo una asignación detallada de permisos).

La distribución principal de Django también aglutina aplicaciones que proporcionan un sistema de comentarios, herramientas para sindicar contenido via RSS y/o Atom, "páginas planas" que permiten gestionar páginas de contenido sin necesidad de escribir controladores o vistas para esas páginas, y un sistema de redirección de URLs.

Otras características de Django son:

  • Un mapeador objeto-relacional.
  • Aplicaciones "enchufables" que pueden instalarse en cualquier página gestionada con Django.
  • Una API de base de datos robusta.
  • Un sistema incorporado de "vistas genéricas" que ahorra tener que escribir la lógica de ciertas tareas comunes.
  • Un sistema extensible de plantillas basado en etiquetas, con herencia de plantillas.
  • Un despachador de URLs basado en expresiones regulares.
  • Un sistema "middleware" para desarrollar características adicionales; por ejemplo, la distribución principal de Django incluye componentes middleware que proporcionan cacheo, compresión de la salida, normalización de URLs, protección CSRF y soporte de sesiones.
  • Soporte de internacionalización, incluyendo traducciones incorporadas de la interfaz de administración.
  • Documentación incorporada accesible a través de la aplicación administrativa (incluyendo documentación generada automáticamente de los modelos y las bibliotecas de plantillas añadidas por las aplicaciones).

Arquitectura

Aunque Django está fuertemente inspirado en la filosofía de desarrollo Modelo Vista Controlador, sus desarrolladores declaran públicamente que no se sienten especialmente atados a observar estrictamente ningún paradigma particular, y en cambio prefieren hacer "lo que les parece correcto". Como resultado, por ejemplo, lo que se llamaría "controlador" en un "verdadero" framework MVC se llama en Django "vista", y lo que se llamaría "vista" se llama "plantilla".

Gracias al poder de las capas mediator y foundation, Django permite que los desarrolladores se dediquen a construir los objetos Entity y la lógica de presentación y control para ellos.

Presentación

Aquí se maneja la interacción entre el usuario y el computador. En Django, ésta tarea la realizan el template engine y el template loader que toman la información y la presentan al usuario (vía HTML, por ejemplo). El sistema de configuración de URLs es también parte de la capa de presentación...

Control

En esta capa reside el programa o la lógica de aplicación en sí. En Django son representados por las views y manipulators. La capa de presentación depende de ésta y a su vez ésta lo hace de la capa de dominio.

Mediator

Es el encargado de manejar la interacción entre el subsistema Entity y foundation. Aquí se realiza el mapeo objeto-relacional a cargo del motor de Django.

Entity

El subsistema entity maneja los objetos de negocio. El mapeo objeto-relacional de Django permite escribir objetos de tipo entity de una forma fácil y estándar.

Foundation

La principal tarea del subsistema foundation es la de manejar a bajo nivel el trabajo con la base de datos. Se provee soporte a nivel de foundation para varias bases de datos y otras están en etapa de prueba.

Soporte de bases de datos

Respecto a la base de datos, la recomendada es PostgreSQL, pero también son soportadas MySQL y SQLite 3. Se encuentra en desarrollo un adaptador para Microsoft SQL Server. Una vez creados los data models, Django proporciona una abstracción de la base de datos a través de su API que permite crear, recuperar, actualizar y borrar objetos. También es posible que el usuario ejecute sus propias consultas SQL directamente. En el modelo de datos de Django, una clase representa una tabla en la base de datos y las instancias de esta serán las filas en la tabla.

Soporte de servidores Web

Como mencionamos en los requisitos, Django incluye un servidor web liviano para realizar pruebas y trabajar en la etapa de desarrollo. En la etapa de producción, sin embargo, se recomienda Apache 2 con mod_python. Aunque Django soporta la especificación WSGI, por lo que puede correr sobre una gran variedad de servidores como FastCGI o SCGI en Apache u otros servidores (particularmente Lighttpd).

Requerimientos

Django requiere Python 2.3 o superior. No se necesitan otras bibliotecas de Python para poder obtener una funcionalidad básica. En un entorno de desarrollo –especialmente si queremos experimentar con Django—no necesitamos un web server instalado, ya que Django trae su propio servidor liviano para éste propósito.

Base de datos PostgreSQL, MySQL o SQLite 3.

Otros aspectos

Inconsistencias entre la nomenclatura Django y el patrón MVC

Django aparenta implementar el patrón MVC, pero el controlador es llamado vista y la vista template. ¿Por qué?

Primero, debemos aclarar que al momento de diseñar Django, no se buscó apegarse a nada en particular, sino desarrollar una herramienta que funcione lo mejor posible.

Si bien es cierto que se asemeja mucho a la implementación del patrón MVC, para Django la Vista describe “qué” datos serán presentados y no “cómo” se verán los mismos. Aquí es donde entran en juego los templates, que describen “cómo los datos son presentados”.

Se dice que el “controller” de un MVC clásico está representado por el propio framework. Es decir, el sistema que envía un request a la vista correspondiente, de acuerdo a la configuración de URL de Django (archivo de configuración).

En el caso de querer hacer una correspondencia, entonces diríamos que éste es un framework “MTV”: modelo, template, vista.

Proceso de un request

Teniendo la arquitectura en cuenta, veremos a grandes rasgos como se procesa un request.

Cuando Django recibe un request, lo primero que se hace es crear un objeto HttpRequest que la representa y servirá como abstracción para trabajar sobre diferentes servidores.

Luego se realiza la resolución de la URL. Esto consiste en seleccionar la función del view (a partir de la URL especificada en el request) que participará en la creación del response.

Una vez que hemos resuelto que función resolverá la URL especificada, se invoca a la función del view con el objeto request como primer parámetro. Aquí se realiza el trabajo pesado como: consultas a la BDD, carga de templates y generación de HTML. Se devuelve un objeto HTTP response o una excepción.

Middleware

Django provee tres puntos diferentes en los que permite ejecutar clases middleware, previamente definidas en el archivo de configuración. Una misma clase puede ejecutarse en más de un punto, estas son las opciones:

Request middleware: se ejecuta después de crear el objeto HttpRequest, pero antes de resolver la URL, permitiendo modificar el objeto request o devolver un respuesta propia antes de que el resto de la aplicación ejecute.

View middleware: es ejecutado después de la resolución de la URL, pero antes de ejecutar la vista correspondiente. Permite ejecutar operaciones antes y después de la ejecución de la vista. La vista podría llegar a no ejecutarse en absoluto.

Response middleware: se ejecuta al final, después de que el objeto response haya sido creado y antes de entregarlo al cliente. Utilizado para realizar las modificaciones finales.

Django en la web

Estos son solo algunos de los sitios que utilizan Django, aquí encontrará una lista más completa

Enlaces externos

Obtenido de "Django"

Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • Django — Тип веб фреймворк Автор Lawrence Journal World …   Википедия

  • Django d'Or — Sommaire 1 Historique 2 Les Django d Or 3 Les Django d Or Européens 4 Les Eurodjango 5 …   Wikipédia en Français

  • Django — may refer to: Contents 1 Music 2 Film 3 Technology 4 …   Wikipedia

  • Django d’Or — ist der Name folgender Jazzpreise: Django d’Or (Frankreich), erstmals 1992 Django d’Or (Belgien), erstmals 1995 Django d’Or (Schweden), erstmals 1998 Django d’Or (Italien), erstmals 1999 Django d’Or (Dänemark), erstmals 2001 …   Deutsch Wikipedia

  • Django —    Western de Sergio Corbucci, avec Franco Nero, Loredana Nusciak, José Bodalo.   Pays: Italie et Espagne   Date de sortie: 1966   Technique: couleurs   Durée: 1 h 30    Résumé    Deux bandes rivales terrorisent un village près de la frontière… …   Dictionnaire mondial des Films

  • Django d'or — Le Django d or est un trophée remis lors d une cérémonie du même nom, récompensant des artistes du monde du Jazz. Sommaire 1 Historique 2 Les Django d or 3 Les Django d or européens 4 …   Wikipédia en Français

  • Django — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Django est un terme romani signifiant je m éveille. C était le surnom du joueur de guitare Django Reinhardt. Django Reinhardt a donné son prénom à :… …   Wikipédia en Français

  • Django — Filmdaten Deutscher Titel Django – Die Geier stehen Schlange Originaltitel 7 Dollari sul rosso …   Deutsch Wikipedia

  • Django 2 — Pour les articles homonymes, voir Django. Django 2 est un western spaghetti réalisé par Nello Rossati en 1987. C est la suite de Django (réalisé en 1966). Synopsis Au Mexique, arrive Django (Franco Nero), le cavalier solitaire devenu moine qui… …   Wikipédia en Français

  • Django — Jean (Django) Reinhardt …   Eponyms, nicknames, and geographical games

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”