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, bajo acoplamiento, desarrollo rápido y el principio de no repetirse . [9] Python se utiliza 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 mediante introspección y se configura mediante modelos de administración.
Django se creó en el otoño de 2003, cuando los programadores web del periódico Lawrence Journal-World , Adrian Holovaty y Simon Willison , comenzaron a utilizar Python para crear aplicaciones. Jacob Kaplan-Moss fue contratado al principio del desarrollo de Django, poco antes de que terminara la pasantía de Simon Willison. [16] Fue lanzado públicamente bajo una licencia BSD en julio de 2005. El marco lleva el nombre del guitarrista Django Reinhardt . [17] Adrian 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 Django Software Foundation (DSF) recién formada mantendría Django en el futuro. [19]
Características
Componentes
Captura de pantalla de la interfaz de administración de Django para modificar una cuenta de usuario
un servidor web ligero e independiente para desarrollo y pruebas
un sistema de validación y serializació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
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 [22] . Más de 5000 paquetes [23] están disponibles para ampliar el comportamiento original del marco, brindando 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 etiquetas de plantilla asumen una implementación de 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 son obligatorios para ejecutar un proyecto 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 del servidor
Django se puede ejecutar 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 bases 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] Hay una bifurcación llamada django-nonrel, que admite bases de datos NoSQL , como MongoDB y Google App Engine 's Datastore. [32]
Django también se puede ejecutar 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 puede proporcionar funcionalidad para compilar Django en un .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] A las versiones LTS se les aplicarán correcciones de seguridad y pérdida de datos durante un período de tiempo garantizado, normalmente más de 3 años, independientemente del ritmo de las versiones posteriores.
DjangoCon
Hay una conferencia semestral para desarrolladores y usuarios de Django, denominada "DjangoCon", que se celebra desde septiembre de 2008. DjangoCon se celebra 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 2012 tuvo lugar en Washington, DC, del 3 al 8 de septiembre. 2013 DjangoCon se llevó a cabo en Chicago en el Hotel Hyatt Regency y los Sprints posteriores a la conferencia se realizaron en Digital Bootcamp, un centro de capacitación en informática. [64] La DjangoCon US de 2014 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 AT&T Executive Center. La DjangoCon US 2016 se celebró en Filadelfia, PA, en la Escuela Wharton de la Universidad de Pensilvania, del 17 al 22 de julio. [65] La DjangoCon US 2017 se llevó a cabo en Spokane, WA; [66] En 2018, DjangoCon US se llevó a cabo en San Diego, CA. [67] DjangoCon US 2019 se celebró nuevamente en San Diego, CA, del 22 al 27 de septiembre. DjangoCon 2021 se llevó a cabo virtualmente y en 2022, DjangoCon US regresó a San Diego del 16 al 21 de octubre.
Las miniconferencias de Django generalmente se llevan a cabo todos los años como parte de la Conferencia Australiana de Python 'PyCon AU'. [68] 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. [69] [70] [71]
Puertos a otros idiomas
Los programadores han portado el diseño del motor de plantillas de Django desde Python a otros lenguajes, proporcionando un soporte multiplataforma decente. Algunas de estas opciones son puertos más directos; otros, aunque inspirados en Django y conservando sus conceptos, se toman la libertad de desviarse del diseño de Django:
Django como marco es capaz de construir un CMS completo ; sin embargo, existen proyectos de CMS dedicados que se basan y amplían el marco de Django. A continuación se muestra una lista de algunos de los CMS basados en Django más populares:
^ abc "django/LÉAME". GitHub . Consultado el 8 de septiembre de 2020 .
^ "Preguntas frecuentes sobre Django" . Consultado el 27 de marzo de 2019 .
^ "5.0.3". 4 de marzo de 2024 . Consultado el 5 de marzo de 2024 .
^ "Descarga de Django" . Consultado el 7 de agosto 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 .
^ ab "Preguntas frecuentes: General - Documentación de Django - Django" . Consultado el 30 de abril de 2016 .
^ ab 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 marco MVC.
^ "Filosofías del diseño". Django . Consultado el 18 de marzo de 2018 .
^ "Qué impulsa a Instagram: cientos de instancias, docenas de tecnologías". Ingeniería de Instagram .
^ "Pitón". 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 ya esta red social privada". El borde . 18 de agosto de 2014 . Consultado el 16 de junio de 2016 .
^ Demi, Luke (15 de agosto de 2021). "Refrenando la manada atronadora ⛈ Llegar al 80% de utilización de la CPU con Django". Blog de la casa club . Consultado el 16 de agosto de 2021 .
^ Willison, Simón . "¿Cuál es la historia del framework web Django? ¿Por qué se lo ha descrito como" desarrollado en una sala de redacción "?". Quora . Consultado el 18 de octubre de 2019 .
^ "Presentando Django". El libro de Django. Archivado desde el original el 29 de julio de 2018 . Consultado el 29 de julio de 2018 .
^ "Reseña: Música de guitarra melódica, divertida y precisa de Adrian Holovaty'". Guitarra acustica . 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 Django Packages" . 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 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.
^ "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 .
^ "Google Code Archive: almacenamiento a largo plazo para Google Code Project Hosting" . Consultado el 30 de abril de 2016 .
^ maxirobaína. "GitHub - maxirobaina/django-firebird: backend SQL de Firebird para django". GitHub . Consultado el 30 de abril de 2016 .
^ "Django no relacionado" . Consultado el 30 de abril de 2016 .
^ máquina de playa. "GitHub - beachmachine/django-jython: backends de bases de datos y extensiones para el desarrollo de Django sobre Jython". GitHub . Consultado el 30 de abril de 2016 .
^ "Proceso de lanzamiento 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.
^ "Lanzamiento de Django 0.91". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Presentamos Django 0,95". Blog de Django. Consultado el 2 de febrero de 2013.
^ "¡Anuncio de Django 0.96!". Blog de Django. Consultado el 2 de febrero de 2013.
^ "¡Lanzamiento de Django 1.0!". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Lanzamiento de Django 1.1". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Lanzamiento de Django 1.2". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Lanzamiento de Django 1.3". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Lanzamiento de Django 1.4". Blog de Django. Consultado el 2 de febrero de 2013.
^ "Lanzamiento de Django 1.5" Blog de Django. Consultado el 27 de febrero de 2013.
^ "Lanzamiento de Django 1.6" Blog de Django. Consultado el 6 de noviembre de 2013.
^ "Lanzamiento de Django 1.7" Blog de Django. Consultado el 4 de septiembre de 2014.
^ "Lanzamiento de Django 1.8" Blog de Django. Consultado el 2 de abril de 2015.
^ "Lanzamiento de Django 1.9" Blog de Django. Consultado el 1 de diciembre de 2015.
^ "Lanzamiento de Django 1.10" Blog de Django. Consultado el 1 de agosto de 2016.
^ "Lanzamiento de Django 1.11" Blog de Django. Consultado el 4 de abril de 2017.
^ "Lanzamiento de Django 2.0" Blog de Django. Consultado el 3 de diciembre de 2017.
^ "Lanzamiento de Django 2.1" 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 .
^ 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.
^ DjangoCon AU. Djangocon.com.au. Recuperado el 16 de diciembre de 2019.
^ "Django, nacido en Lawrence, que revolucionó la construcción de sitios web y 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". Reunirse .
^ Comprar. "– Lenguaje de plantilla líquido". Lenguaje de plantilla líquido .
^ "Plantilla :: Swig: interfaz Perl para el motor de plantillas Swig inspirado en Django. - metacpan.org". metacpan.org .
^ Sinfonía. "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 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 978-1783984404
Ravindrun, Arun (31 de marzo de 2015), Patrones de diseño y mejores prácticas de Django (1.ª ed.), Packt, p. 180, ISBN 978-1783986644
Osborn, Tracy (mayo de 2015), Hello Web App (1.ª ed.), Tracy Osborn, p. 142, ISBN 978-0986365911
Bendoraitis, Aidas (octubre de 2014), Desarrollo web con Django Cookbook (1.ª ed.), Packt, p. 294, ISBN 978-1783286898
Baumgartner, Peter; Malet, Yann (2015), Django de alto rendimiento (1ª ed.), Lincoln Loop, pág. 184, ISBN 978-1508748120
Elman, Julia; Lavin, Mark (2014), Django ligero (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 , recuperado 26 de octubre 2014
enlaces externos
Wikimedia Commons tiene medios relacionados con Django (marco web) .