Django | ||
---|---|---|
Información general | ||
Tipo de programa | Framework Web | |
Autor |
Adrian Holovaty Simon Willison | |
Desarrollador | Django Software Foundation | |
Lanzamiento inicial | Julio 2005 | |
Licencia | BSD License | |
Información técnica | ||
Programado en | Python | |
Interfaz gráfica predeterminada | web user interface | |
Versiones | ||
Última versión estable | 4.1.3 (info) ( 1 de noviembre de 2022 (2 años y 20 días)) | |
Enlaces | ||
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–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 «DRY» (del inglés Don't Repeat Yourself,«No te repitas»). El lenguaje Python es usado en todos los componentes del framework, incluso en configuraciones, archivos,[1] y en sus modelos de datos.
Al igual que Ruby on Rails, otro popular framework de código abierto, Django se usó en producción durante un tiempo antes de que se liberara al público; fue desarrollado por Adrian Holovaty, Simon Willison, Jacob Kaplan-Moss y Wilson Miner mientras trabajaban en World Online, y originalmente se utilizó para administrar tres sitios web de noticias: The Lawrence Journal-World, lawrence.com y KUsports.com.
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).
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:
Django también es una plataforma habitual que brinda múltiples herramientas
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.
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.
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.
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.
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.
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.
Significado | |
---|---|
No soportado | |
Soportado | |
Versión actual | |
Versión futura |
Versión | Fecha | Notas |
---|---|---|
0.90[2] | 16 de noviembre de 2005 | |
0.91[3] | 11 de enero de 2006 | "new-administrador" |
0.95[4] | 29 de julio de 2006 | "magic removal" |
0.96[5] | 23 de marzo de 2007 | "newforms", herramientas de testeo |
1.0[6] | 03 de septiembre de 2008 | Estabilidad de la API, administrador desacoplado, unicode |
1.1[7] | 29 de julio de 2009 | Agregados, testeos basados en transacción |
1.2[8] | 17 de mayo de 2010 | Múltiples conexiones de bd, CSRF, validación de modelo |
1.3[9] | 23 de marzo de 2011 | Vistas basadas en clases, archivos estáticos |
1.4 LTS[10] | 23 de marzo de 2012 | Zonas horarias, pruebas de navegador, plantillas de aplicación.[11] |
1.5[12] | 26 de febrero de 2013 | Soporte para Python 3, modelo de usuario configurable |
1.6[13] | 06 de noviembre de 2013 | Dedicado a Malcolm Tredinnick, Administración de transacciones de bd, agrupación de conexiones. |
1.7[14] | 02 de septiembre de 2014 | Migraciones, carga de aplicación y configuración. |
1.8 LTS[15] | 01 de abril de 2015 | Soporte nativo para múltiples motores de plantillas. comunicado de apoyo a largo plazo , soportado hasta por lo menos, abril de 2018 |
1.9[16] | 01 de diciembre de 2015 | Validación automática de contraseñas. Nuevos estilos para la interfaz de administrador. |
1.10[17] | 17 de enero de 2017 | Búsqueda de texto completo para PostgreSQL. Nuevo estilo de middleware para resolver la falta de estricta solicitud / respuesta estratificación del viejo estilo de middleware. Soporte oficial para los nombres de usuario de Unicode. |
1.11[18] | 1 de abril de 2017 | Última versión con soporte para Python 2.7. Versión de abril 2020 |
2.0[19] | 1 de diciembre de 2017 | Primera versión con soporte solo para Python 3. |
2.1[19] | 1 de agosto de 2018 | Permiso de "vista" en modelo |
2.2 LTS[20] | 1 de abril de 2019 | versión de seguridad. Compatible hasta al menos abril de 2022 |
3.0[21] | 2 de diciembre de 2019 | Soporte ASGI |
3.1[22] | 4 de agosto de 2020 | Vistas asíncronas y middleware |
3.2 LTS[23] | abril de 2021 | Soporte extendido hasta abril de 2024 |
4.0[24] | diciembre de 2021 | Soporte extendido hasta abril de 2023 |
4.1[24] | agosto de 2022 | Soporte extendido hasta diciembre de 2023 |
4.2 LTS[24] | abril de 2023 | Soporte extendido hasta abril de 2026 |
5.0 | diciembre de 2023 | Soporte extendido hasta abril de 2025 |
Respecto a la base de datos, la recomendada es PostgreSQL, pero también son soportadas MySQL y SQLite 3. 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.
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 con mod_python. Aunque Django soporta la especificación WSGI, por lo que puede correr sobre una gran variedad de servidores como FastCGI o SCGI en Apache u otros servidores (particularmente Lighttpd).
Django requiere Python 2.5 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.
Django incorpora compatibilidad directa con las siguientes bases de datos relacionales: PostgreSQL, MySQL, Oracle, SQLite y MariaDB. En caso de querer usar otras bases de datos relacionales (como SQL Server) o no relacionales (como MongoDB) se debe hacer uso de librerías específicas para dicho propósito [25].
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).
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.
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:
Estos son solo algunos de los sitios que utilizan Django, aquí se encuentra una lista más completa