Django (Framework)
Django (Framework)
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).
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).
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 esta y a su vez esta 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
No soportado
Soportado
Versión actual
Versión futura
Versión Fecha Notas
16 de
0.902 noviembre
de 2005
11 de
0.913 enero de "new-administrador"
2006
29 de julio
0.954 "magic removal"
de 2006
23 de
0.965 marzo de "newforms", herramientas de testeo
2007
03 de
1.06 septiembre Estabilidad de la API, administrador desacoplado, unicode
de 2008
29 de julio
1.17 Agregados, testeos basados en transacción
de 2009
17 de
1.28 mayo de Múltiples conexiones de bd, CSRF, validación de modelo
2010
23 de
1.39 marzo de Vistas basadas en clases, archivos estáticos
2011
1.4 LTS 23 de
10 marzo de Zonas horarias, pruebas de navegador, plantillas de aplicación. 11
2012
26 de
1.512 febrero de Soporte para Python 3, modelo de usuario configurable
2013
06 de
Dedicado a Malcolm Tredinnick, Administración de transacciones de bd, agrupación de
1.613 noviembre
conexiones.
de 2013
02 de
1.7 14 septiembre Migraciones, carga de aplicación y configuración.
de 2014
1.8 01 de abril Soporte nativo para múltiples motores de plantillas. comunicado de apoyo a largo
LTS15 de 2015 plazo , soportado hasta por lo menos, abril de 2018
01 de
1.9 16 diciembre Validación automática de contraseñas. Nuevos estilos para la interfaz de administrador.
de 2015
17 de Búsqueda de texto completo para PostgreSQL. Nuevo estilo de middleware para
1.10 17 enero de resolver la falta de estricta solicitud / respuesta estratificación del viejo estilo de
2017 middleware. Soporte oficial para los nombres de usuario de Unicode.
1 de abril
1.11 18 Última versión con soporte para Python 2.7. Versión de abril 2020
de 2017
1 de
2.0 19 diciembre Primera versión con soporte solo para Python 3.
de 2017
1 de
2.1 19 agosto de Permiso de "vista" en modelo
2018
2.2 1 de abril versión de seguridad. Compatible hasta al menos abril de 2022
LTS20 de 2019
2 de
3.0 21 diciembre Soporte ASGI
de 2019
4 de
3.1 22 agosto de Vistas asíncronas y middleware
2020
3.2 abril de
Soporte extendido hasta abril de 2024
LTS23 2021
diciembre
4.0 24 Soporte extendido hasta abril de 2023
de 2021
agosto de
4.1 24 Soporte extendido hasta diciembre de 2023
2022
4.2 abril de
Soporte extendido hasta abril de 2026
LTS24 2023
Requerimientos
Django requiere Python 2.5 (https://www.python.org/) 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 este propósito, con la restricción de solo permitir un usuario a la vez.
Otros aspectos
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.
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 (http://w
ww.djangosites.org/)
Pinterest25
http://www.lawrence.com/26
https://web.archive.org/web/20070609122443/http://www.chicagocrime.org/27
http://www.ljworld.com/
http://projects.washingtonpost.com/congress/
http://www.torontolife.com/
http://www.lawrencechamber.com/
Referencias
10. "Django 1.4 liberado" (https://www.djangop
1. «Métodos File en Python: Creación y
roject.com/weblog/2012/mar/23/14/).
manipulación de archivos de texto» (https://
Django weblog. Extraído el 2 de Febrero
pythondiario.com/2019/03/metodos-file-en- de 2013.
python-creacion-y.html). Consultado el 19
de febrero de 2017. 11. «Django’s proceso de liberación -
documentación Django - Django» (https://w
2. "Introduciendo Django 0.90" (https://www.dj
eb.archive.org/web/20160306091619/http
angoproject.com/weblog/2005/nov/16/firstr
s://docs.djangoproject.com/en/1.7/internals/
elease/). Django weblog. Extraído el 2 de release-process/#long-term-support-lts-rele
Febrero de 2013.
ases). Archivado desde el original (https://d
3. "Django 0.91 liberado" (https://www.django ocs.djangoproject.com/en/1.7/internals/rele
project.com/weblog/2006/jan/11/091/). ase-process/#long-term-support-lts-release
Django weblog. Extraído el 2 de Febrero s) el 6 de marzo de 2016. Consultado el 30
de 2013. de abril de 2016.
4. "Introduciendo Django 0.95" (https://www.dj 12. "Django 1.5 liberado" (https://www.djangop
angoproject.com/weblog/2006/jul/29/095/). roject.com/weblog/2013/feb/26/15/) Django
Django weblog. Extraído el 2 de Febrero weblog. Extraído el 27 de Febrero de 2013.
de 2013.
13. "Django 1.6 liberado" (https://www.djangop
5. "Anunciando Django 0.96!" (https://www.dj roject.com/weblog/2013/nov/06/django-16-r
angoproject.com/weblog/2007/mar/23/096/). eleased/) Django weblog. Extraído el 6 de
Django weblog. Extraído el 2 de Febrero Noviembre de 2013.
de 2013.
14. "Django 1.7 liberado" (https://www.djangop
6. "Django 1.0 liberado!" (https://www.djangop roject.com/weblog/2014/sep/02/release-17-
roject.com/weblog/2008/sep/03/1/). Django final/) Django weblog. Extraído el 4 de
weblog. Extraído el 2 de Febrero de 2013. Setiembre de 2014.
7. "Django 1.1 liberado" (https://www.djangop 15. "Django 1.8 liberado" (https://www.djangop
roject.com/weblog/2009/jul/29/1-point-1/). roject.com/weblog/2015/apr/01/release-18-f
Django weblog. Extraído el 2 de Febrero inal/) Django weblog. Extraído el 2 de Abril
de 2013. de 2015.
8. "Django 1.2 liberado" (https://www.djangop 16. "Django 1.9 liberado" (https://www.djangop
roject.com/weblog/2010/may/17/12/). roject.com/weblog/2015/dec/01/django-19-r
Django weblog. Extraído el 2 de Febrero eleased/) Django weblog. Extraído el 1 de
de 2013. Diciembre de 2015.
9. "Django 1.3 liberado" (https://www.djangop 17. "Django 1.10 liberado" (https://www.django
roject.com/weblog/2011/mar/23/13/). project.com/weblog/2016/aug/01/django-11
Django weblog. Extraído el 2 de Febrero 0-released/) Django weblog. Extraído el 17
de 2013. de Enero de 2017.
18. "Download Django" (https://www.djangopro n/dev/releases/3.2/).
ject.com/download/) Download Django. docs.djangoproject.com. Consultado el 19
Extraído el 9 de Diciembre 2016. de noviembre de 2020.
19. "Download Django" (https://www.djangopro 24. «Download Django | Django» (https://www.
ject.com/download/) Download Django. djangoproject.com/download/).
Retrieved 9 December 2016. www.djangoproject.com. Consultado el 19
20. «Django 2.2.3 release notes | Django de noviembre de 2020.
documentation | Django» (https://docs.djan 25. «El co-fundador Paul Sciarra responde que
goproject.com/en/dev/releases/2.2.3/). usan Django extensamente» (https://www.q
docs.djangoproject.com. Consultado el 19 uora.com/What-is-the-technology-stack-beh
de noviembre de 2020. ind-Pinterest-1).
21. «Django 3.0 release notes | Django 26. «Anuncio de trabajo donde afirman que
documentation | Django» (https://docs.djan ellos mantienen, promocionan y usan
goproject.com/en/dev/releases/3.0/). activamente Django como plataforma de
docs.djangoproject.com. Consultado el 19 desarrollo para sus aplicaciones» (http://w
de noviembre de 2020. ww.lawrence.com/jobs/wol/programmer/).
22. «Django 3.1 release notes | Django 27. «En la sección de Preguntas frecuentes
documentation | Django» (https://docs.djan responden Django a la pregunta "¿Que
goproject.com/en/dev/releases/3.1/). tecnologías usan?" » (http://www.everybloc
docs.djangoproject.com. Consultado el 19 k.com/faq/).
de noviembre de 2020.
23. «Django 3.2 release notes - UNDER
DEVELOPMENT | Django documentation |
Django» (https://docs.djangoproject.com/e
Enlaces externos
Proyecto Django (https://www.djangoproject.com)
Instalador de Django (http://bitnami.org/stack/djangostack)
Grupo LinkedIn Django en Latinoamérica (http://www.linkedin.com/groups/Django-Latinoam
erica-3997975)
Wiki de la comunidad de Django y repositorio del código (https://code.djangoproject.com/)
Comunidad en español de Django (http://www.django.es/) Archivado (https://web.archive.or
g/web/20081219134300/http://www.django.es/) el 19 de diciembre de 2008 en Wayback
Machine.
Planet de Django en español (http://www.django.es/comunidad/) Archivado (https://web.arch
ive.org/web/20090721054510/http://www.django.es/comunidad/) el 21 de julio de 2009 en
Wayback Machine.
Django Software Foundation (https://www.djangoproject.com/foundation/)
Libros sobre Django (http://www.django.es/libros/) Archivado (https://web.archive.org/web/2
0081219173520/http://www.django.es/libros/) el 19 de diciembre de 2008 en Wayback
Machine.
Django Search Engine (https://web.archive.org/web/20070113073337/http://djangosearch.c
om/)
Sobre la arquitectura de Django (http://blog.worldmaker.net/node/211)
Biografía de Django Reinhardt, de quien proviene el nombre del framework (https://web.arch
ive.org/web/20111029011517/http://www.redhotjazz.com/django.html)
The Django Book (http://www.djangobook.com)
Github (https://github.com/django/django)
Manejo de Dashboards a partir de Django Plotly Dash (https://django-plotly-dash.readthedo
cs.io/en/latest/)
Obtenido de «https://es.wikipedia.org/w/index.php?title=Django_(framework)&oldid=141292599»
Esta página se editó por última vez el 28 ene 2022 a las 12:07.
El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0;
pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.