Está en la página 1de 33

Django (framework)

Django es un framework de desarrollo web


de código abierto, escrito en Python, que
respeta el patrón de diseño conocido
como Modelo–vista–template . 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 de 2008
fue anunciado que la recién formada
Django Software Foundation se haría
cargo de Django en el futuro.
Django
www.djangoproject.com

Información general
Desarrollador(es) Django Software
Foundation
Autor(es) Lawrence Journal-
World
Lanzamiento inicial 2005
Última versión estable 2.2 (info )
1 de abril de 2019 (2
meses y 19 días)
Género Framework Web
Programado en Python
Sistema operativo Multiplataforma
Licencia BSD License
En español Sí

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, el desarrollo rápido y el
principio No te repitas (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.

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 .

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 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).

Django también es una plataforma


habitual que brinda multiples herramientas

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, esta
tarea la realizan el motor de plantillas y el
cargador de plantillas 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 vistas y los
manipuladores. La capa de presentación
depende de ésta y a su vez ésta depende
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.

Historial de versiones
Significado

Rojo No soportado

Amarillo Soportado

Verde Versión actual


Versión Fecha Notas

16 de
0.90[1] noviembre
de 2005

11 de
0.91[2] enero de "new-administrador"
2006

29 de julio
0.95[3] "magic removal"
de 2006

23 de
0.96[4] marzo de "newforms", herramientas de testeo
2007

03 de
1.0[5] septiembre Estabilidad de la API, administrador desacoplado, unicode
de 2008

29 de julio
1.1[6] Agregados, testeos basados en transacción
de 2009

17 de
1.2[7] mayo de Múltiples conexiones de bd, CSRF, validación de modelo
2010

1.3[8] 23 de Vistas basadas en clases, archivos estáticos


marzo de
2011

23 de
1.4[9] marzo de Zonas horarias, pruebas de navegador, plantillas de aplicación. [10]
2012

26 de
1.5[11] febrero de Soporte para Python 3, modelo de usuario configurable
2013

06 de
Dedicado a Malcolm Tredinnick, Administración de transacciones de bd,
1.6[12] noviembre
agrupación de conexiones.
de 2013

02 de
02 de
1.7[13] septiembre Migraciones, carga de aplicación y configuración.
de 2014

01 de abril Soporte nativo para múltiples motores de plantillas. comunicado de


1.8[14]
de 2015 apoyo a largo plazo , soportado hasta por lo menos, abril del 2018

01 de
Validación automática de contraseñas. Nuevos estilos para la interfaz de
1.9[15] diciembre
administrador.
de 2015

Búsqueda de texto completo para PostgreSQL. Nuevo estilo de


17 de
middleware para resolver la falta de estricta solicitud / respuesta
1.10[16] enero de
estratificación del viejo estilo de middleware. Soporte oficial para los
2017
nombres de usuario de Unicode.

1 de abril
1.11[17] Ultima versión con soporte para Python 2.7. Versión de Abril 2020
de 2017

1 de
2.0[18] diciembre Primera versión con soporte solo para Python 3.
de 2017

1 de
2.1[18] agosto de
2018

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 modelos de datos, 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 un registro de una tabla
en la base de datos y las instancias de
ésta serán las tuplas 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.5 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,
con la restricción de solo permitir un
usuario a la vez..

Base de datos PostgreSQL, MySQL, Oracle


o SQLite.

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.

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 una Petición HTTP

Teniendo la arquitectura en cuenta,


veremos a grandes rasgos como se
procesa un request.

Cuando Django recibe una Petición HTTP,


lo primero que se hace es crear un
instancia de la clase HttpRequest que
contiene todas las propiedades de la
petición y diferentes métodos útiles.

Luego se realiza la resolución de la URL.


Esto consiste en seleccionar la función de
la vista (a partir de la URL especificada en
la petición HTTP) que participará en la
creación de la respuesta de la aplicación.

Una vez que hemos resuelto que función


resolverá la URL especificada, se invoca a
la función de la vista con la instancia
**request** de la petición HTTP como
primer parámetro, el método de la vista
contiene generalmente todo el trabajo
lógico, operaciones como obtener objetos
de la Base de Datos a través de los
modelos, cálculos, transformaciones y
finalmente la construcción de la
representación de la respuesta final al
usuario.

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 una 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í se encuentra una lista
más completa

Pinterest[19]
http://www.lawrence.com/ [20]
https://web.archive.org/web/200706091
22443/http://www.chicagocrime.org/ [21]

http://www.ljworld.com/
http://projects.washingtonpost.com/co
ngress/
http://www.torontolife.com/
http://www.lawrencechamber.com/

Referencias
1. "Introduciendo Febrero de
Django 0.90" . 2013.
Django weblog. 2. "Django 0.91
Extraído el 2 de liberado" .
Django weblog.
Extraído el 2 de 5. "Django 1.0
Febrero de liberado!" .
2013. Django weblog.
3. "Introduciendo Extraído el 2 de
Django 0.95" . Febrero de
Django weblog. 2013.
Extraído el 2 de 6. "Django 1.1
Febrero de liberado" .
2013. Django weblog.
4. "Anunciando Extraído el 2 de
Django 0.96!" . Febrero de
Django weblog. 2013.
Extraído el 2 de 7. "Django 1.2
Febrero de liberado" .
2013. Django weblog.
Extraído el 2 de 10. «Django’s
Febrero de proceso de
2013. liberación -
8. "Django 1.3 documentación
liberado" . Django -
Django weblog. Django» .
Extraído el 2 de Consultado el
Febrero de 30 de abril de
2013. 2016.

9. "Django 1.4 11. "Django 1.5


liberado" . liberado"
Django weblog. Django weblog.
Extraído el 2 de Extraído el 27
Febrero de de Febrero de
2013. 2013.
12. "Django 1.6 Extraído el 2 de
liberado" Abril de 2015.
Django weblog. 15. "Django 1.9
Extraído el 6 de liberado"
Noviembre de Django weblog.
2013. Extraído el 1 de
13. "Django 1.7 Diciembre de
liberado" 2015.
Django weblog. 16. "Django 1.10
Extraído el 4 de liberado"
Setiembre de Django weblog.
2014. Extraído el 17
14. "Django 1.8 de Enero de
liberado" 2017.
Django weblog.
17. "Download 19. «El co-fundador
Django" Paul Sciarra
Download responde que
Django. usan Django
Extraído el 9 de extensamente
Diciembre ».
2016. 20. «Anuncio de
18. "Download trabajo donde
Django" afirman que
Download ellos
Django. mantienen,
Retrieved 9 promocionan y
December usan
2016. activamente
Django como
plataforma de
desarrollo para responden
sus Django a la
aplicaciones» . pregunta "¿Que
21. «En la sección tecnologías
de Preguntas usan?" » .
frecuentes

Enlaces externos
Proyecto Django
Instalador de Django
Grupo LinkedIn Django en
Latinoamérica
Wiki de la comunidad de Django y
repositorio del código
Comunidad en español de Django
Archivado el 19 de diciembre de 2008
en la Wayback Machine.
Planet de Django en español
Archivado el 21 de julio de 2009 en la
Wayback Machine.
Django Software Foundation
Libros sobre Django
Archivado el 19 de diciembre de 2008
en la Wayback Machine.
Django Search Engine
Sobre la arquitectura de Django
Biografía de Django Reinhardt, de quien
proviene el nombre del framework
The Django Book
Obtenido de
«https://es.wikipedia.org/w/index.php?
title=Django_(framework)&oldid=115274391»

Última edición el 15 abr 2019 a las


08:01

El contenido está disponible bajo la licencia CC BY-


SA 3.0 , salvo que se indique lo contrario.

También podría gustarte