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 conectar" los componentes, menos código, bajo acoplamiento, desarrollo rápido y el principio de no repetirse . [9] Python se utiliza en todo el código, 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.
Django fue creado en el otoño de 2003, cuando los programadores web del periódico Lawrence Journal-World , Adrian Holovaty y Simon Willison , comenzaron a usar Python para crear aplicaciones. Jacob Kaplan-Moss fue contratado al principio del desarrollo de Django, poco antes de que terminara la pasantía de Willison. [16] Fue lanzado públicamente bajo una licencia BSD en julio de 2005. El framework recibió el nombre del guitarrista Django Reinhardt . [17] Holovaty es un guitarrista de jazz romaní inspirado en parte por la música de Reinhardt. [18]
En junio de 2008, se anunció que una nueva Django Software Foundation (DSF) se encargaría del mantenimiento de Django en el futuro. [19]
Un servidor web ligero e independiente para desarrollo y pruebas.
Un sistema de serialización y validación de formularios que puede traducir entre formularios HTML y valores adecuados para el almacenamiento en la base de datos.
un sistema de plantillas 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 despachador 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 propios componentes 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
El sistema de configuración de Django permite que código de terceros se conecte a un proyecto normal, siempre que siga las convenciones de aplicaciones reutilizables [22] . Hay más de 5000 paquetes [23] disponibles para ampliar el comportamiento original del framework, proporcionando soluciones a problemas que la herramienta original no abordaba: 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, [24] los filtros y las etiquetas de plantilla suponen la implementación de un motor, y tanto las aplicaciones incluidas como las de autenticación y administración requieren el uso del ORM interno . Ninguno de estos filtros o aplicaciones incluidas son obligatorios para ejecutar un proyecto de Django, pero las aplicaciones reutilizables tienden a depender de ellos, lo que alienta a los desarrolladores a seguir usando la pila oficial para beneficiarse plenamente del ecosistema de aplicaciones.
Disposiciones de servidores
Django puede ejecutarse junto con Apache , Nginx usando WSGI , Gunicorn o Cherokee usando flup (un módulo de Python). [25] [26] 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 . [27] Django admite oficialmente cinco backends de base de datos: PostgreSQL , MySQL , MariaDB , SQLite y Oracle . [28] Microsoft SQL Server se puede utilizar con django-mssql, mientras que existen backends externos similares para IBM Db2 , [29] SQL Anywhere [30] y Firebird . [31] Existe una bifurcación llamada django-nonrel, que admite bases de datos NoSQL , como MongoDB y Datastore de Google App Engine . [32]
Django también puede ejecutarse junto con Python 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 pueden proporcionar la funcionalidad para compilar Django en un archivo .war adecuado para la implementación. [33]
Historial de versiones
El equipo de Django ocasionalmente designará ciertas versiones como versiones de "soporte a largo plazo" (LTS). [34] Las versiones LTS tendrán correcciones de seguridad y pérdida de datos aplicadas por un período de tiempo garantizado, generalmente más de 3 años, independientemente del ritmo de las versiones posteriores.
DjangoCon
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; [64] mientras que otra se lleva a cabo en los Estados Unidos en agosto o septiembre, en varias ciudades. [65] La DjangoCon de 2012 tuvo lugar en Washington, DC, del 3 al 8 de septiembre. La DjangoCon de 2013 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 informática. [66] La DjangoCon US de 2014 regresó a Portland , OR del 30 de agosto al 6 de septiembre. La DjangoCon US de 2015 se llevó a cabo en Austin , TX del 6 al 11 de septiembre en el AT&T Executive Center. La DjangoCon US 2016 se celebró en Filadelfia, Pensilvania, en la Wharton School de la Universidad de Pensilvania, del 17 al 22 de julio . [67] La DjangoCon US 2017 se celebró en Spokane, Washington; [68] en 2018, la DjangoCon US se celebró en San Diego, California. [69] La DjangoCon US 2019 se celebró de nuevo en San Diego, California, del 22 al 27 de septiembre. La DjangoCon 2021 se llevó a cabo de forma virtual y en 2022, la DjangoCon US regresó a San Diego del 16 al 21 de octubre. La DjangoCon US 2023 se celebró del 16 al 20 de octubre en el centro de convenciones de Durham , Carolina del Norte, y la DjangoCon US 2024 está prevista para volver a Durham del 22 al 27 de septiembre. [70] [71]
Las miniconferencias de Django se suelen celebrar todos los años como parte de la Conferencia Australiana de Python 'PyCon AU'. [72] Anteriormente, estas miniconferencias se han celebrado en:
Django ha generado grupos de usuarios y reuniones en todo el mundo, el grupo más notable es la organización Django Girls , que comenzó en Polonia pero ahora ha tenido eventos en 91 países. [73] [74] [75]
Puertos a otros idiomas
Los programadores han trasladado el diseño del motor de plantillas de Django desde Python a otros lenguajes, lo que proporciona un soporte multiplataforma decente. Algunas de estas opciones son adaptaciones más directas; otras, aunque inspiradas en Django y manteniendo sus conceptos, se toman la libertad de desviarse del diseño de Django:
Django como framework es capaz de crear un CMS completo , sin embargo, existen proyectos CMS dedicados que se basan en el framework Django y lo amplían. A continuación, se incluye una lista de algunos de los CMS basados en Django más populares:
^ abc "django/README". GitHub . Consultado el 8 de septiembre de 2020 .
^ "Preguntas frecuentes sobre Django" . Consultado el 27 de marzo de 2019 .
^ "Versión 5.1.2". 8 de octubre de 2024. Consultado el 21 de octubre de 2024 .
^ "Descargar Django" . Consultado el 7 de agosto de 2020 .
^ "django/LICENSE". GitHub . Consultado el 8 de septiembre de 2020 .
^ "Preguntas frecuentes: General - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
^ ab "Preguntas frecuentes: General - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
^ de Adrian Holovaty, Jacob Kaplan-Moss; et al. The Django Book. 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 que se lo pueda llamar un marco MVC.
^ "Filosofías de diseño". Django . Consultado el 18 de marzo de 2018 .
^ "Lo que impulsa a Instagram: cientos de instancias, docenas de tecnologías". Ingeniería de Instagram .
^ "Python". Red de desarrolladores de Mozilla . Archivado desde el original el 8 de febrero de 2012. Consultado el 30 de abril de 2016 .
^ Robenolt, Matt. "Escalando Django a 8 mil millones de páginas vistas". blog.disqus.com .
^ "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 utiliza ahora esta red social privada". The Verge . 18 de agosto de 2014 . Consultado el 16 de junio de 2016 .
^ Demi, Luke (15 de agosto de 2021). "Cómo controlar la manada atronadora ⛈ Cómo alcanzar el 80 % de utilización de la CPU con Django". Blog de Clubhouse . Consultado el 16 de agosto de 2021 .
^ Willison, Simon . "¿Cuál es la historia del framework web Django? ¿Por qué se lo ha descrito como "desarrollado en una sala de prensa"?". Quora . Consultado el 18 de octubre de 2019 .
^ "Introducción a Django". El libro de Django. Archivado desde el original el 29 de julio de 2018. Consultado el 29 de julio de 2018 .
^ "Reseña: 'Melodic Guitar Music', de Adrian Holovaty, precisa y lúdica". Guitarra acústica . 12 de diciembre de 2023. Archivado desde el original el 30 de diciembre de 2023.
^ "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 .
^ "Lista de paquetes de la API de paquetes de Django" . Consultado el 17 de abril de 2023 .
^ "Filosofías de diseño - Documentación de Django - Django". Archivado desde el original el 4 de marzo de 2016 . Consultado el 30 de abril de 2016 .
^ "Documentación de implementación de Django". Archivado desde el original el 11 de enero de 2012.
^ "Servidor web Cherokee: libro de recetas para configurar Django: documentación de 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.
^ "Documentación de Django". Documentación de Django . Consultado el 9 de junio de 2023 .
^ 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 non-rel" . Consultado el 30 de abril de 2016 .
^ beachmachine. «GitHub - beachmachine/django-jython: backends y extensiones de bases de datos para el desarrollo de Django sobre Jython». GitHub . Consultado el 30 de abril de 2016 .
^ "Proceso de publicación de Django - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
^ "Presentación de Django 0.90". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 0.91 publicado". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Presentación de Django 0.95". Blog de Django. Consultado el 2 de febrero de 2013.
^ "¡Anunciamos Django 0.96!". Blog de Django. Consultado el 2 de febrero de 2013.
^ "¡Ya se publicó Django 1.0!". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 1.1 publicado". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 1.2 publicado". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 1.3 publicado". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 1.4 publicado". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Django 1.5 lanzado" Blog de Django. Consultado el 27 de febrero de 2013.
^ "Django 1.6 lanzado" Blog de Django. Consultado el 6 de noviembre de 2013.
^ "Django 1.7 lanzado" Blog de Django. Consultado el 4 de septiembre de 2014.
^ "Django 1.8 lanzado" Blog de Django. Consultado el 2 de abril de 2015.
^ "Django 1.9 lanzado" Blog de Django. Consultado el 1 de diciembre de 2015.
^ "Django 1.10 lanzado" Blog de Django. Consultado el 1 de agosto de 2016.
^ "Django 1.11 lanzado" Blog de Django. Consultado el 4 de abril de 2017.
^ "Django 2.0 lanzado" Blog de Django. Consultado el 3 de diciembre de 2017.
^ "Django 2.1 lanzado" Blog de Django. Consultado el 2 de agosto de 2018.
^ Notas de la versión de Django 2.2. Consultado el 1 de julio de 2019.
^ Notas de la versión de Django 3.0. Consultado el 2 de diciembre de 2019.
^ Notas de la versión de Django 3.1. Consultado el 5 de agosto de 2020.
^ "Notas de la versión de Django 3.2". 6 de abril de 2021. Consultado el 7 de junio de 2021 .
^ "Notas de la versión de Django 4.0". 7 de diciembre de 2021. Consultado el 4 de agosto de 2022 .
^ "Notas de la versión de Django 4.1". 3 de agosto de 2022. Consultado el 4 de agosto de 2022 .
^ "Notas de la versión de Django 4.2" . Consultado el 4 de agosto de 2022 .
^ "Notas de la versión de Django 5.0". 4 de diciembre de 2023. Consultado el 4 de diciembre de 2023 .
^ "Notas de la versión de Django 5.1". 7 de agosto de 2024. Consultado el 8 de agosto de 2024 .
^ Serie DjangoCon EU Archivado el 4 de marzo de 2016 en Wayback Machine , Lanyrd.com
^ Serie DjangoCon US Archivado 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.
^ "Acerca de DjangoCon US 2023". DjangoCon US . Consultado el 17 de julio de 2024 .
^ "Acerca de DjangoCon US". DjangoCon US . Consultado el 17 de julio de 2024 .
^ DjangoCon AU. Djangocon.com.au. Consultado el 16 de diciembre de 2019.
^ "Django, el programa nacido en Lawrence que revolucionó la creación de sitios web, celebra su décimo aniversario". Lawrence Journal-World . 9 de julio de 2015 . Consultado el 18 de octubre de 2019 .
^ "Django Girls - comienza tu viaje con la programación" . Consultado el 21 de octubre de 2019 .
^ "Grupos de Django". Meetup .
^ Shopify. "– Lenguaje de plantillas Liquid". Lenguaje de plantillas Liquid .
^ "Template::Swig - Interfaz 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 . Archivado desde el original el 9 de julio de 2017. Consultado el 10 de diciembre de 2014 .
^ "twigjs/twig.js". GitHub .
^ "Bienvenido - Jinja2 (El motor de plantillas 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), Aprendiendo a desarrollar páginas web con Django (1.ª ed.), Packt, pág. 405, ISBN 978-1783984404
Ravindrun, Arun (31 de marzo de 2015), Django Design Patterns and Best Practices (1.ª ed.), Packt, pág. 180, ISBN 978-1783986644
Osborn, Tracy (mayo de 2015), Hello Web App (1.ª ed.), Tracy Osborn, pág. 142, ISBN 978-0986365911
Bendoraitis, Aidas (octubre de 2014), Desarrollo web con Django Cookbook (1.ª ed.), Packt, pág. 294, ISBN 978-1783286898
Baumgartner, Peter; Malet, Yann (2015), High Performance Django (1.ª ed.), Lincoln Loop, pág. 184, ISBN 978-1508748120
Elman, Julia; Lavin, Mark (2014), Lightweight Django (1.ª ed.), O'Reilly Media, pág. 246, ISBN 978-1491945940
Percival, Harry (2014), Desarrollo basado en pruebas con Python (1.ª ed.), O'Reilly Media, pág. 480, ISBN 978-1449364823, archivado desde el original el 16 de julio de 2017 , consultado el 26 de octubre de 2014
Enlaces externos
Wikimedia Commons tiene medios relacionados con Django (framework web) .