0% encontró este documento útil (0 votos)
3 vistas8 páginas

Django (Framework)

Django es un framework de desarrollo web de código abierto escrito en Python, diseñado para facilitar la creación de sitios web complejos mediante el patrón de diseño modelo-vista-controlador (MVC). Desde su lanzamiento en 2005, ha evolucionado con características como un sistema de administración incorporado, un mapeador objeto-relacional y soporte para múltiples bases de datos. La arquitectura de Django se basa en la separación de responsabilidades, permitiendo a los desarrolladores centrarse en la lógica de la aplicación y la presentación de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas8 páginas

Django (Framework)

Django es un framework de desarrollo web de código abierto escrito en Python, diseñado para facilitar la creación de sitios web complejos mediante el patrón de diseño modelo-vista-controlador (MVC). Desde su lanzamiento en 2005, ha evolucionado con características como un sistema de administración incorporado, un mapeador objeto-relacional y soporte para múltiples bases de datos. La arquitectura de Django se basa en la separación de responsabilidades, permitiendo a los desarrolladores centrarse en la lógica de la aplicación y la presentación de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

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–
Django
controlador (MVC). Fue desarrollado originalmente
para gestionar páginas web 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.

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 Información general
«DRY» (del inglés Don't Repeat Yourself,«No te Tipo de Framework Web
repitas»). El lenguaje Python es usado en todos los programa
componentes del framework, incluso en
1 Autor Adrian Holovaty, Simon Willison
configuraciones, archivos, ​ y en sus modelos de
datos. Desarrollador Django Software Foundation
Lanzamiento Julio 2005
inicial
Visión general y características
Licencia BSD License
Al igual que Ruby on Rails, otro popular framework Información técnica
de código abierto, Django se usó en producción Programado en Python
durante un tiempo antes de que se liberara al Interfaz gráfica web user interface
público; fue desarrollado por Adrian Holovaty,
predeterminada
Simon Willison, Jacob Kaplan-Moss y Wilson Miner
mientras trabajaban en World Online, y Versiones
originalmente se utilizó para administrar tres sitios Última versión 4.1.3 (info (https://www.djangop
web de noticias: The Lawrence Journal-World (htt estable roject.com/weblog/2022/nov/0
p://www.ljworld.com/), lawrence.com (http://www.l 1/bugfix-release/)) ( 1 de
awrence.com/) y KUsports.com (http://www.kusport noviembre de 2022 (11 meses y 3
s.com/). días))

Los orígenes de Django en la administración de Enlaces


páginas de noticias son evidentes en su diseño, ya Sitio web oficial (https://www.djangoproject.com)
que proporciona una serie de características que Repositorio de código (https://github.com/django/
facilitan el desarrollo rápido de páginas orientadas a django)
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 múltiples 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 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 enero de
0.913 ​ 2006
"new-administrador"

29 de julio de
0.954 ​ 2006
"magic removal"

23 de marzo de
0.965 ​ 2007
"newforms", herramientas de testeo

03 de
1.06 ​ septiembre de Estabilidad de la API, administrador desacoplado, unicode
2008
29 de julio de
1.17 ​ 2009
Agregados, testeos basados en transacción

17 de mayo de
1.28 ​ 2010
Múltiples conexiones de bd, CSRF, validación de modelo

23 de marzo de
1.39 ​ 2011
Vistas basadas en clases, archivos estáticos

1.4 LTS 23 de marzo de


10 ​ 2012 Zonas horarias, pruebas de navegador, plantillas de aplicación.11 ​

26 de febrero
1.512 ​ de 2013
Soporte para Python 3, modelo de usuario configurable

06 de
Dedicado a Malcolm Tredinnick, Administración de transacciones de bd,
1.613 ​ noviembre de
agrupación de conexiones.
2013

02 de
1.7 14 ​ septiembre de Migraciones, carga de aplicación y configuración.
2014
1.8 01 de abril de Soporte nativo para múltiples motores de plantillas. comunicado de apoyo a
LTS15 ​ 2015 largo plazo , soportado hasta por lo menos, abril de 2018

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

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


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

1 de abril de
1.11 18 ​ 2017
Última versión con soporte para Python 2.7. Versión de abril 2020

1 de diciembre
2.0 19 ​ de 2017
Primera versión con soporte solo para Python 3.

1 de agosto de
2.1 19 ​ 2018
Permiso de "vista" en modelo

2.2 1 de abril de
versión de seguridad. Compatible hasta al menos abril de 2022
LTS20 ​ 2019

2 de diciembre
3.0 21 ​ de 2019
Soporte ASGI

4 de agosto de
3.1 22 ​ 2020
Vistas asíncronas y middleware
3.2
abril de 2021 Soporte extendido hasta abril de 2024
LTS23 ​
diciembre de
4.0 24 ​ 2021
Soporte extendido hasta abril de 2023

4.1 24 ​ agosto de 2022 Soporte extendido hasta diciembre de 2023

4.2
abril de 2023 Soporte extendido hasta abril de 2026
LTS24 ​
diciembre de
5.0 Soporte extendido hasta abril de 2025
2023

Soporte de bases de datos


Respecto a la base de datos, la recomendada es PostgreSQL (http://www.postgresql.org/), pero también son
soportadas MySQL (http://www.postgresql.org/) y SQLite 3 (https://web.archive.org/web/2014072218211
6/http://www.sqlite.org/). 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 esta 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 (http://h
ttpd.apache.org/) con mod_python (http://www.modpython.org/). Aunque Django soporta la especificación
WSGI (https://www.python.org/dev/peps/pep-0333/), 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 (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.

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 su patrón es llamado MTV: modelo, template, vista.

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

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 (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
release-process/#long-term-support-lts-rele
1. «Métodos File en Python: Creación y ases). Archivado desde el original (https://d
manipulación de archivos de texto» (https:// ocs.djangoproject.com/en/1.7/internals/rele
pythondiario.com/2019/03/metodos-file-en- ase-process/#long-term-support-lts-release
python-creacion-y.html). Consultado el 19 s) el 6 de marzo de 2016. Consultado el 30
de febrero de 2017. de abril de 2016.
2. "Introduciendo Django 0.90" (https://www.dj 12. "Django 1.5 liberado" (https://www.djangop
angoproject.com/weblog/2005/nov/16/firstr roject.com/weblog/2013/feb/26/15/) Django
elease/). Django weblog. Extraído el 2 de weblog. Extraído el 27 de Febrero de 2013.
Febrero de 2013.
13. "Django 1.6 liberado" (https://www.djangop
3. "Django 0.91 liberado" (https://www.django roject.com/weblog/2013/nov/06/django-16-r
project.com/weblog/2006/jan/11/091/). 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
4. "Introduciendo Django 0.95" (https://www.dj roject.com/weblog/2014/sep/02/release-17-
angoproject.com/weblog/2006/jul/29/095/). final/) Django weblog. Extraído el 4 de
Django weblog. Extraído el 2 de Febrero Setiembre de 2014.
de 2013.
15. "Django 1.8 liberado" (https://www.djangop
5. "Anunciando Django 0.96!" (https://www.dj roject.com/weblog/2015/apr/01/release-18-f
angoproject.com/weblog/2007/mar/23/09 inal/) Django weblog. Extraído el 2 de Abril
6/). Django weblog. Extraído el 2 de de 2015.
Febrero de 2013.
16. "Django 1.9 liberado" (https://www.djangop
6. "Django 1.0 liberado!" (https://www.djangop roject.com/weblog/2015/dec/01/django-19-r
roject.com/weblog/2008/sep/03/1/). Django eleased/) Django weblog. Extraído el 1 de
weblog. Extraído el 2 de Febrero de 2013. Diciembre de 2015.
7. "Django 1.1 liberado" (https://www.djangop 17. "Django 1.10 liberado" (https://www.django
roject.com/weblog/2009/jul/29/1-point-1/). 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.
8. "Django 1.2 liberado" (https://www.djangop 18. "Download Django" (https://www.djangopro
roject.com/weblog/2010/may/17/12/). ject.com/download/) Download Django.
Django weblog. Extraído el 2 de Febrero Extraído el 9 de Diciembre 2016.
de 2013.
19. "Download Django" (https://www.djangopro
9. "Django 1.3 liberado" (https://www.djangop ject.com/download/) Download Django.
roject.com/weblog/2011/mar/23/13/). Retrieved 9 December 2016.
Django weblog. Extraído el 2 de Febrero
de 2013. 20. «Django 2.2.3 release notes | Django
documentation | Django» (https://docs.djan
10. "Django 1.4 liberado" (https://www.djangop goproject.com/en/dev/releases/2.2.3/).
roject.com/weblog/2012/mar/23/14/). docs.djangoproject.com. Consultado el 19
Django weblog. Extraído el 2 de Febrero de noviembre de 2020.
de 2013.
21. «Django 3.0 release notes | Django
11. «Django’s proceso de liberación - documentation | Django» (https://docs.djan
documentación Django - Django» (https://w goproject.com/en/dev/releases/3.0/).
eb.archive.org/web/20160306091619/http docs.djangoproject.com. Consultado el 19
s://docs.djangoproject.com/en/1.7/internals/ de noviembre de 2020.
22. «Django 3.1 release notes | Django 25. «El co-fundador Paul Sciarra responde que
documentation | Django» (https://docs.djan usan Django extensamente» (https://www.q
goproject.com/en/dev/releases/3.1/). uora.com/What-is-the-technology-stack-beh
docs.djangoproject.com. Consultado el 19 ind-Pinterest-1).
de noviembre de 2020. 26. «Anuncio de trabajo donde afirman que
23. «Django 3.2 release notes - UNDER ellos mantienen, promocionan y usan
DEVELOPMENT | Django documentation | activamente Django como plataforma de
Django» (https://docs.djangoproject.com/e desarrollo para sus aplicaciones» (http://w
n/dev/releases/3.2/). ww.lawrence.com/jobs/wol/programmer/).
docs.djangoproject.com. Consultado el 19 27. «En la sección de Preguntas frecuentes
de noviembre de 2020. responden Django a la pregunta "¿Que
24. «Download Django | Django» (https://www. tecnologías usan?" » (https://web.archive.or
djangoproject.com/download/). g/web/20150311042702/http://www.everybl
www.djangoproject.com. Consultado el 19 ock.com/faq/). Archivado desde el original
de noviembre de 2020. (http://www.everyblock.com/faq/) el 11 de
marzo de 2015. Consultado el 1 de marzo
de 2015.

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/20
081219173520/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=154158891»

También podría gustarte