Django ( / dʒ æ ŋ ɡ oʊ / JANG -goh ; a veces estilizado como django ) [8] es una Python basados libre y de código abierto marco web que sigue las-template-vistas de modelo (MTV) patrón arquitectónico . [9] [10] Es mantenido por la Django Software Foundation (DSF), una organización independiente estadounidense establecida como una organización sin fines de lucro 501 (c) (3) .
Autor (es) original (es) | Adrian Holovaty , Simon Willison |
---|---|
Desarrollador (es) | Fundación de software Django [1] |
Versión inicial | 21 de julio de 2005 [2] |
Lanzamiento estable | 3.2.3 [3] / 13 de mayo de 2021 |
Repositorio | Repositorio de Django |
Escrito en | Python [4] |
Tamaño | 8,9 MB [5] |
Tipo | Marco web [6] |
Licencia | BSD de 3 cláusulas [7] |
Sitio web | www |
El objetivo principal de Django es facilitar la creación de sitios web complejos basados en bases de datos. El marco enfatiza la reutilización y la "capacidad de conexión" de los componentes, menos código, poco acoplamiento, desarrollo rápido y el principio de no repetirse . [11] Python se usa en todas partes, incluso para configuraciones, archivos y modelos de datos. Django también proporciona una interfaz administrativa opcional de creación, lectura, actualización y eliminación que se genera dinámicamente a través de la introspección y se configura a través de modelos de administración.
Algunos sitios conocidos que usan Django incluyen PBS , [12] Instagram , [13] Mozilla , [14] The Washington Times , [15] Disqus , [16] Bitbucket , [17] y Nextdoor . [18]
Historia
Django fue creado en el otoño de 2003, cuando los programadores web en el Lawrence Journal-World periódico, Adrian Holovaty y Simon Willison , comenzaron a usar Python para aplicaciones de construcción. Jacob Kaplan-Moss fue contratado al principio del desarrollo de Django poco antes de que terminara la pasantía de Simon Willison. [19] Fue lanzado públicamente bajo una licencia BSD en julio de 2005. El marco lleva el nombre del guitarrista Django Reinhardt . [20] Adrian Holovaty es un guitarrista de jazz romaní y un gran admirador de Django Reinhardt.
En junio de 2008, se anunció que una Django Software Foundation (DSF) recién formada mantendría Django en el futuro. [21]
Características
Componentes
A pesar de tener su propia nomenclatura, como nombrar los objetos invocables que generan las respuestas HTTP "vistas", [9] el marco central de Django puede verse como una arquitectura MVC . [10] Consiste en un mapeador relacional de objetos (ORM) que media entre modelos de datos (definidos como clases Python) y una base de datos relacional (" M odel"), un sistema para procesar solicitudes HTTP con un sistema de plantillas web (" V iew ") y un despachador de URL basado en expresiones regulares (" C ontroller ").
También se incluyen en el marco principal:
- un servidor web ligero e independiente para desarrollo y pruebas
- un sistema de validación y serialización de formularios que se puede traducir entre formularios HTML y valores adecuados para el almacenamiento en la base de datos
- un sistema de plantilla que utiliza el concepto de herencia tomado de la programación orientada a objetos
- un marco de almacenamiento en caché que puede utilizar cualquiera de varios métodos de caché
- Soporte para clases de middleware que pueden intervenir en varias etapas del procesamiento de solicitudes y llevar a cabo funciones personalizadas.
- un sistema de despacho interno que permite que los componentes de una aplicación se comuniquen eventos entre sí a través de señales predefinidas
- un sistema de internacionalización , que incluye traducciones de los componentes propios de Django a una variedad de idiomas
- un sistema de serialización que puede producir y leer representaciones XML y / o JSON de instancias del modelo Django
- un sistema para ampliar las capacidades del motor de plantillas
- una interfaz para el marco de prueba unitario incorporado de Python
Aplicaciones empaquetadas
La distribución principal de Django también incluye varias aplicaciones en su paquete "contrib", que incluyen:
- un sistema de autenticación extensible
- la interfaz administrativa dinámica
- herramientas para generar feeds de distribución RSS y Atom
- un marco de "Sitios" que permite que una instalación de Django ejecute varios sitios web, cada uno con su propio contenido y aplicaciones
- herramientas para generar Google Sitemaps
- incorporado en la mitigación de petición en sitios cruzados falsificación , cross-site scripting , inyección SQL , contraseña craqueo y otros ataques típicos web, la mayoría de ellos activada de forma predeterminada [22] [23]
- un marco para la creación de aplicaciones GIS
Extensibilidad
El sistema de configuración de Django permite conectar código de terceros a un proyecto normal, siempre que siga las convenciones de la aplicación reutilizable [24] . Más de 2500 paquetes [25] están disponibles para extender el comportamiento original del marco, proporcionando soluciones a problemas que la herramienta original no abordó: registro, búsqueda, provisión y consumo de API , CMS , etc.
Sin embargo, esta extensibilidad se ve mitigada por las dependencias de los componentes internos. Si bien la filosofía de Django implica un acoplamiento flexible, [26] los filtros de plantilla y las etiquetas asumen la implementación de un motor, y tanto las aplicaciones empaquetadas de autenticación como de administración requieren el uso del ORM interno . Ninguno de estos filtros o aplicaciones empaquetadas es obligatorio para ejecutar un proyecto de Django, pero las aplicaciones reutilizables tienden a depender de ellos, lo que anima a los desarrolladores a seguir usando la pila oficial para beneficiarse plenamente del ecosistema de aplicaciones.
Arreglos de servidor
Django se puede ejecutar junto con Apache , Nginx usando WSGI , Gunicorn o Cherokee usando flup (un módulo de Python). [27] [28] Django también incluye la capacidad de iniciar un servidor FastCGI , lo que permite su uso detrás de cualquier servidor web que admita FastCGI, como Lighttpd o Hiawatha . También es posible utilizar otros servidores web compatibles con WSGI . [29] Django admite oficialmente cinco backends de bases de datos: PostgreSQL , MySQL , MariaDB , SQLite y Oracle . Microsoft SQL Server se puede utilizar con django-mssql en sistemas operativos de Microsoft , [30] mientras que existen backends externos similares para IBM Db2 , [31] SQL Anywhere [32] y Firebird . [33] Hay una bifurcación llamada django-nonrel, que admite bases de datos NoSQL , como MongoDB y el almacén de datos de Google App Engine . [34]
Django también se puede ejecutar junto con Jython en cualquier servidor de aplicaciones Java EE como GlassFish o JBoss . En este caso, se debe instalar django-jython para proporcionar controladores JDBC para la conectividad de la base de datos, que también puede proporcionar funcionalidad para compilar Django en un .war adecuado para la implementación. [35]
Google App Engine incluye compatibilidad con la versión 1.xx [36] de Django como uno de los marcos incluidos.
Historial de versiones
El equipo de Django ocasionalmente designará ciertos lanzamientos como lanzamientos de “soporte a largo plazo” (LTS). [37] Las versiones de LTS obtendrán correcciones de seguridad y pérdida de datos aplicadas durante un período de tiempo garantizado, generalmente más de 3 años, independientemente del ritmo de las versiones posteriores.
Versión | Fecha [38] | Notas [39] |
---|---|---|
0.90 [40] | 16 de noviembre de 2005 | |
0,91 [41] | 11 de enero de 2006 | "nuevo-administrador" |
0,95 [42] | 29 de julio de 2006 | "eliminación mágica" |
0,96 [43] | 23 de marzo de 2007 | "newforms", herramientas de prueba |
1.0 [44] | 3 de septiembre de 2008 | Estabilidad de API, administración desacoplada, unicode |
1.1 [45] | 29 de julio de 2009 | Agregados, pruebas basadas en transacciones |
1.2 [46] | 17 de mayo de 2010 | Varias conexiones de base de datos, CSRF , validación de modelos |
1.3 [47] | 23 de marzo de 2011 | Vistas basadas en clases, archivos estáticos |
1,4 LTS [48] | 23 de marzo de 2012 | Zonas horarias, en pruebas de navegador, plantillas de aplicaciones. |
1,5 [49] | 26 de febrero de 2013 | Compatibilidad con Python 3, modelo de usuario configurable |
1,6 [50] | 6 de noviembre de 2013 | Dedicado a Malcolm Tredinnick, gestión de transacciones de base de datos, agrupación de conexiones. |
1,7 [51] | 2 de septiembre de 2014 | Migraciones, carga y configuración de aplicaciones. |
1.8 LTS [52] | 1 de abril de 2015 | Soporte nativo para múltiples motores de plantilla. El soporte finalizó el 1 de abril de 2018 |
1,9 [53] | 1 de diciembre de 2015 | Validación automática de contraseña. Nuevo estilo para la interfaz de administración. |
1,10 [54] | 1 de agosto de 2016 | Búsqueda de texto completo para PostgreSQL. Middleware de nuevo estilo. |
1,11 LTS [55] | 4 abr 2017 | Última versión compatible con Python 2.7. El soporte finalizó el 1 de abril de 2020 |
2,0 [56] | 2 de diciembre de 2017 | Primera versión solo de Python 3, sintaxis de enrutamiento de URL simplificada, administrador compatible con dispositivos móviles. |
2.1 [57] | 1 de agosto de 2018 | Permiso de "visualización" del modelo. |
2.2 LTS [58] | 1 abr 2019 | Comunicado de seguridad. Compatible hasta al menos abril de 2022 |
3,0 [59] | 2 dic 2019 | Soporte ASGI |
3,1 [60] | 4 de agosto de 2020 | Vistas asincrónicas y middleware |
3,2 LTS [61] | Abr. De 2021 | Soporte extendido hasta al menos abril de 2024 |
4.0 [61] | Dic 2021 | Soporte extendido hasta al menos abril de 2023 |
4.1 [61] | Agosto 2022 | Soporte extendido hasta al menos diciembre de 2023 |
4.2 LTS [61] | Abril 2023 | Soporte extendido hasta al menos abril de 2026 |
5,0 [61] | Diciembre 2023 | Soporte extendido hasta al menos abril de 2025 |
Versión antigua Versión anterior, aún mantenida Ultima versión Última versión de vista previa Lanzamiento futuro |
Herramientas de desarrollo con soporte de Django
Para desarrollar un proyecto Django, no se necesitan herramientas especiales, ya que el código fuente se puede editar con cualquier editor de texto convencional . Sin embargo, los editores especializados en programación de computadoras pueden ayudar a aumentar la productividad del desarrollo, por ejemplo, con características como el resaltado de sintaxis . Dado que Django está escrito en Python, los editores de texto que conocen la sintaxis de Python son beneficiosos en este sentido.
Los entornos de desarrollo integrados (IDE) añaden funciones adicionales, como depuración , refactorización y pruebas unitarias . Al igual que con los editores simples, los IDE con soporte para Python pueden ser beneficiosos. Algunos IDE que están especializados en Python también tienen soporte integrado para proyectos de Django, por lo que el uso de dicho IDE al desarrollar un proyecto de Django puede ayudar a aumentar aún más la productividad. Para comparar dichos IDE de Python, consulte el artículo principal:
Comunidad
Hay una conferencia semestral para desarrolladores y usuarios de Django, llamada "DjangoCon", que se lleva a cabo desde septiembre de 2008. DjangoCon se lleva a cabo anualmente en Europa, en mayo o junio; [62] mientras que otro se realiza en Estados Unidos en agosto o septiembre, en varias ciudades. [63] La DjangoCon de 2012 tuvo lugar en Washington, DC, del 3 al 8 de septiembre. 2013 La DjangoCon se llevó a cabo en Chicago en el Hyatt Regency Hotel y los Sprints posteriores a la conferencia se llevaron a cabo en Digital Bootcamp, un centro de capacitación en computación. [64] La DjangoCon 2014 de EE. UU. Regresó a Portland , Oregón, del 30 de agosto al 6 de septiembre. La DjangoCon US 2015 se llevó a cabo en Austin , TX del 6 al 11 de septiembre en el Centro Ejecutivo de AT&T. La DjangoCon US 2016 se celebró en Filadelfia, Pensilvania, en The Wharton School de la Universidad de Pensilvania, del 17 al 22 de julio. [65] La DjangoCon 2017 de EE. UU. Se celebró en Spokane, WA; [66] en 2018, la DjangoCon US se llevó a cabo en San Diego, CA. [67] La DjangoCon US 2019 se celebró nuevamente en San Diego, CA, del 22 al 27 de septiembre.
Las miniconferencias de Django suelen celebrarse todos los años como parte de la Conferencia Python australiana 'PyCon AU'. [68] Anteriormente, estas miniconferencias se habían celebrado en:
- Hobart , Australia, en julio de 2013,
- Brisbane , Australia, en agosto de 2014 y 2015,
- Melbourne , Australia en agosto de 2016 y 2017, y
- Sydney , Australia, en agosto de 2018 y 2019.
Django ha generado grupos de usuarios y reuniones en todo el mundo, [69] el grupo más notable es la organización Django Girls , que comenzó en Polonia pero ahora ha tenido eventos en 91 países. [70] [71]
Puertos a otros idiomas
Los programadores han adaptado el diseño del motor de plantillas de Django de Python a otros lenguajes, proporcionando un soporte multiplataforma decente. Algunas de estas opciones son puertos más directos; otros, aunque inspirados por Django y conservando sus conceptos, se toman la libertad de desviarse del diseño de Django:
- Líquido para Ruby [72]
- Plantilla :: Swig para Perl [73]
- Twig para PHP y JavaScript [74] [75]
- Jinja para Python [76]
- ErlyDTL para Erlang [77]
CMS basados en Django Framework
Django como framework es capaz de construir un CMS . Sin embargo, ya hay algunos CMS disponibles que se basan en Django. A continuación se muestra una lista de algunos de los CMS creados en el marco de Django:
- CMS de Django [78]
- Aguzanieves
- Entresuelo
Ver también
- Frasco (marco web)
- Proyecto pilones
- Comparación de frameworks web
- Web2py
- Ruby on Rails
Referencias
- ^ "django / README" . GitHub . Consultado el 8 de septiembre de 2020 .
- ^ "Preguntas frecuentes de Django" . Consultado el 27 de marzo de 2019 .
- ^ "Versión 3.2.3" . 13 de mayo de 2021 . Consultado el 21 de mayo de 2021 .
- ^ "django / README" . GitHub . Consultado el 8 de septiembre de 2020 .
- ^ "Descargar Django" . Consultado el 7 de agosto de 2020 .
- ^ "django / README" . GitHub . Consultado el 8 de septiembre de 2020 .
- ^ "django / LICENCIA" . GitHub . Consultado el 8 de septiembre de 2020 .
- ^ "Preguntas frecuentes: General - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
- ^ a b "Preguntas frecuentes: General - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
- ^ a b Adrian Holovaty, Jacob Kaplan-Moss; et al. El libro de Django . Archivado desde el original el 2 de septiembre de 2016 . Consultado el 3 de septiembre de 2013 .
Django sigue este patrón MVC lo suficientemente de cerca como para llamarlo un marco MVC
- ^ "Filosofías del diseño" . Django . Consultado el 18 de marzo de 2018 .
- ^ "20 sitios web creativos que ejecutan Django" .
- ^ "Lo que impulsa Instagram: cientos de instancias, docenas de tecnologías" .
- ^ "Python" . Red de desarrolladores de Mozilla . Consultado el 30 de abril de 2016 .
- ^ Opensource.washingtontimes.com . Consultado el 30 de mayo de 2014.
- ^ "Escalar Django a 8 mil millones de páginas vistas" .
- ^ "DjangoSuccessStoryBitbucket - Django" . Archivado desde el original el 20 de abril de 2016 . Consultado el 30 de abril de 2016 .
- ^ "El anti-Facebook: uno de cada cuatro barrios estadounidenses está utilizando ahora esta red social privada" . The Verge . Consultado el 16 de junio de 2016 .
- ^ "¿Cuál es la historia del marco web Django? ¿Por qué se ha descrito como" desarrollado en una sala de redacción "?" . Consultado el 18 de octubre de 2019 .
- ^ "Presentación de Django" . El libro de Django . Consultado el 29 de julio de 2018 .
- ^ "Anuncio de la Django Software Foundation - Weblog - Django" . Consultado el 30 de abril de 2016 .
- ^ "Seguridad en Django" . Proyecto Django . Consultado el 25 de marzo de 2013 .
- ^ Socol, James (2012). "Mejores prácticas de seguridad básicas (especialmente con Django)" . Consultado el 25 de marzo de 2013 .
- ^ "¿Qué es una aplicación reutilizable? - documentación de django-reusable-app-docs 0.1.0" . Consultado el 30 de abril de 2016 .
- ^ "Paquetes Django" . Consultado el 30 de abril de 2016 .
- ^ "Filosofías de diseño - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
- ^ Documentación de implementación de Django Archivado el 11 de enero de 2012 en Wayback Machine.
- ^ "Servidor web Cherokee - Libro de recetas Configuración de Django - Documentación Cherokee" . Consultado el 30 de abril de 2016 .
- ^ Cómo usar Django con Apache y mod_wsgi Archivado el 8 de marzo de 2013 en Wayback Machine . Documentación oficial de Django.
- ^ "Manfre / django-mssql / source / - Bitbucket" . Consultado el 30 de abril de 2016 .
- ^ ibmdb. "GitHub - ibmdb / python-ibmdb: exportado automáticamente desde code.google.com/p/ibm-db" . GitHub . Consultado el 30 de abril de 2016 .
- ^ "Archivo de código de Google - almacenamiento a largo plazo para el alojamiento de proyectos de código de Google" . Consultado el 30 de abril de 2016 .
- ^ maxirobaina. "GitHub - maxirobaina / django-firebird: backend SQL de Firebird para django" . GitHub . Consultado el 30 de abril de 2016 .
- ^ "Django no rel" . Consultado el 30 de abril de 2016 .
- ^ beachmachine. "GitHub - beachmachine / django-jython: backends de base de datos y extensiones para el desarrollo de Django sobre Jython" . GitHub . Consultado el 30 de abril de 2016 .
- ^ Ejecución de proyectos Pure Django en Google App Engine . Code.google.com (1 de noviembre de 2010). Consultado el 5 de diciembre de 2011.
- ^ "Proceso de lanzamiento de Django - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
- ^ "Descarga Django - Django" . www.djangoproject.com .
- ^ "Preguntas frecuentes: Instalación - Documentación de Django - Django" . docs.djangoproject.com .
- ^ "Presentación de Django 0.90" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 0.91 lanzado" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Presentación de Django 0.95" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "¡Anunciamos Django 0.96!" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "¡Django 1.0 lanzado!" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 1.1 lanzado" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 1.2 lanzado" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 1.3 lanzado" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 1.4 lanzado" . Weblog de Django. Consultado el 2 de febrero de 2013.
- ^ "Django 1.5 lanzado" Weblog de Django. Consultado el 27 de febrero de 2013.
- ^ "Django 1.6 lanzado" Weblog de Django. Consultado el 6 de noviembre de 2013.
- ^ "Django 1.7 lanzado" Weblog de Django. Consultado el 4 de septiembre de 2014.
- ^ "Django 1.8 lanzado" Weblog de Django. Consultado el 2 de abril de 2015.
- ^ "Django 1.9 lanzado" Weblog de Django. Consultado el 1 de diciembre de 2015.
- ^ "Django 1.10 publicado" Weblog de Django. Consultado el 1 de agosto de 2016.
- ^ "Django 1.11 publicado" Weblog de Django. Consultado el 4 de abril de 2017.
- ^ "Django 2.0 lanzado" Weblog de Django. Consultado el 3 de diciembre de 2017.
- ^ "Django 2.1 lanzado" Weblog de Django. Consultado el 2 de agosto de 2018.
- ^ Notas de la versión de Django 2.2.3 recuperadas el 1 de julio de 2019.
- ^ Notas de la versión de Django 3.0 obtenidas el 2 de diciembre de 2019.
- ^ Notas de la versión de Django 3.1 recuperadas el 5 de agosto de 2020.
- ^ a b c d e Descargar Django
- ^ Serie DjangoCon EU Archivada el 4 de marzo de 2016 en Wayback Machine , Lanyrd.com
- ^ Serie DjangoCon US Archivada el 2 de abril de 2016 en Wayback Machine , Lanyrd.com
- ^ "DjangoCon" . DjangoCon. Archivado desde el original el 5 de agosto de 2012 . Consultado el 29 de julio de 2012 .
- ^ "DjangoCon" . DjangoCon . Consultado el 1 de diciembre de 2016 .
- ^ "DjangoCon" . DjangoCon.
- ^ "DjangoCon" . DjangoCon.
- ^ DjangoCon AU . Djangocon.com.au. Consultado el 16 de diciembre de 2019.
- ^ https://www.meetup.com/topics/django/
- ^ "Django, nacido en Lawrence, que revolucionó la construcción de sitios web, celebrando su décimo aniversario" . Lawrence Journal-World . 9 de julio de 2015 . Consultado el 18 de octubre de 2019 .
- ^ "Django Girls: comience su viaje con la programación" . Consultado el 21 de octubre de 2019 .
- ^ Shopify. "- Lenguaje de plantilla líquida" . Lenguaje de plantilla líquida .
- ^ "Plantilla :: Swig - Interfaz de Perl para el motor de plantillas Swig inspirado en Django. - metacpan.org" . metacpan.org .
- ^ Symfony. "Inicio - Twig - El motor de plantillas PHP flexible, rápido y seguro" . twig.sensiolabs.org .
- ^ "twigjs / twig.js" . GitHub .
- ^ "Bienvenido - Jinja2 (el motor de plantillas de Python)" . jinja.pocoo.org .
- ^ "erlydtl / erlydtl" . GitHub .
- ^ "django CMS - Gestión de contenido empresarial con Django - django CMS" . www.django-cms.org . Consultado el 11 de noviembre de 2020 .
Bibliografía
- Jaiswal, Sanjeev; Kumar, Ratan (22 de junio de 2015), Learning Django Web Development (1ª ed.), Packt, p. 405, ISBN 1783984406
- Ravindrun, Arun (31 de marzo de 2015), Patrones de diseño y mejores prácticas de Django (1ª ed.), Packt, p. 180, ISBN 1783986646
- Osborn, Tracy (mayo de 2015), Hello Web App (1ª ed.), Tracy Osborn, p. 142, ISBN 0986365912
- Bendoraitis, Aidas (octubre de 2014), Desarrollo web con Django Cookbook (1ª ed.), Packt, p. 294, ISBN 178328689X
- Baumgartner, Peter; Malet, Yann (2015), High Performance Django (1ª ed.), Lincoln Loop, p. 184, ISBN 1508748128
- Elman, Julia; Lavin, Mark (2014), Lightweight Django (1ª ed.), O'Reilly Media, p. 246, ISBN 149194594X
- Percival, Harry (2014), Desarrollo basado en pruebas con Python (1ª ed.), O'Reilly Media, p. 480, ISBN 1449364829
Esta lista es una extracción de Current Django Books
enlaces externos
- Página web oficial