Blog
Antes de comenzar en Django – Introducción
- Publicado por: Rafael Fernandez
- Categoría: Curso Desarrollo Web Django
En esta parte del tutorial te explicamos que es Django, sus orígenes, sus características generales, así como los requisitos mínimos que debe tener el sistema.
Es posible que seas una de esas personas que se siente cada día más estancado en el pasado sin abrirle paso a las nuevas tecnologías. Asimismo, puede que te preguntes de qué forma ha sucedido esto y por qué no has conseguido avanzar. La respuesta está en Internet, pero, ¿Cómo abordarla?
Se dice que el mejor negocio actualmente es un sitio web, pero, si no eres programador web ¿Cómo crearlo? ¿Acaso eres de los que piensa que ese ámbito del software es muy complejo como para abordarlo por sí solo? Pues te diré que no hay de qué preocuparse. Lo cierto es que ser un programador web hoy en día no es tan difícil como crees, de hecho, puede resultar hasta entretenido.
En eso consiste este curso de Django que hará de ti un excelente programador web. En caso de que desees ser un profesional en esta área, requerirás de meses o hasta años en la inducción y la práctica. Sin embargo, nuestro objetivo es enseñarte que el arte de la programación o elaborar páginas web no es tan difícil como suena. Por ello, intentaremos explicar poco a poco todo el proceso de una forma que evitará que te alejes de nosotros.
De antemano, anhelamos poder ayudarte a aceptar la nueva tecnología, del mismo modo que nosotros lo hacemos.
¿Que es Django?
Django es un Framework de desarrollo web de código libre, está escrito en Python y cumple en cierta medida el paradigma del Modelo ↔ Vista ↔ Controlador.
Fue desarrollado para gestionar varias páginas orientadas a noticias de la World Compañero de Lawrence, Kansas, y fue liberada al público bajo una licencia BSD el 1 julio de 2005. Python es usado en todas las partes del Framework, incluso en configuraciones, archivos, y en los modelos de datos.
El objetivo fundamental de Django es facilitar la creación de sitios web complejos poniendo énfasis en la reutilización, la conectividad y extensibilidad de componentes, el desarrollo rápido y el principio “No te repitas” (DRY, del inglés Do not Repeat Yourself).
Django también proporciona una opción administrativa CRUDA (crear, leer, actualizar y eliminar) de la interfaz que se genera de forma dinámica a través de la introspección y configuraración a través de modelos de administración. Algunas páginas utilizan Django desde hace tiempo, como la web de Spotify, esta es una página desde la que se permite escuchar música a través de Internet sin tener que comprarla o descargarla. Además, su aplicación permite gestionar las bibliotecas musicales del usuario desde cualquier dispositivo digital.
El nombre de este Framework de desarrollo web le viene dado en honor al guitarrista de jazz Django Reinhardt.
Características generales de Django
Los orígenes de Django como administrador 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 necesitar que los desarrolladores escriban controladores y vistas para las áreas de administración de una página, Django incorpora una aplicación para
administrar los contenidos. Esta aplicación se puede incluir como parte de cualquier página hecha con Django y puede administrar varias páginas hechas con Django a partir de una sola instalación. Dicha aplicación permite la creación, actualización y eliminación de objetos de contenido, llevando un registro de todas las acciones realizadas sobre cada uno.
Django también proporciona una interfaz para administrar los usuarios y los grupos de usuarios (incluyendo una asignación detallada de permisos). Además de los archivos que se han comentado Django también incluye:
- Un sistema de redirección de URL.
- Un sistema de comentarios.
- Herramientas para sindicar contenido vía RSS y / o Atom.
- Un servidor web independiente y ligero para desarrollo y pruebas.
- Un sistema de validación que permite diferenciar entre las etiquetas HTML y los valores susceptibles de ser guardados en la base de datos.
- Un entorno de almacenamiento de caché que puede ser utilizado para cualquiera de los métodos de caché.
- Soporte para las clases de Middleware que pueden intervenir en varias etapas de procesamiento de solicitudes y llevar a cabo las funciones habituales.
- Un sistema interno que permite comunicar acontecimientos entre componentes de una aplicación a través de señales preestablecidas.
- Un sistema de internacionalización, incluyendo las traducciones de los propios componentes de Django en diferentes idiomas.
- Un sistema de serialización que puede producir y leer representaciones XML (eXtensible Markup Language) y / o JSON (JavaScript Object Notation) de las instancias de modelo de Django.
- Un sistema para extender las capacidades del motor de plantillas.
- Una interfaz creada con Python para unitarias.
El núcleo de Django consiste en una asignación entre objeto y relación que existe entre:
- Los modelos de datos (definido como las clases de Python) y una base de datos
relacional ( “model.py“), - Un sistema para procesar las solicitudes con un sistema de plantillas web
( “Views.py“) y una expresión regular obtenida por URL ( “Controller“)
Sin embargo existen diferencias entre la nomenclatura Django y el patrón MVC. Este hecho se debe a que el diseño de Django no se quiso vincular a nada en particular sino que se quería desarrollar una herramienta que funcionara lo mejor posible.
Si bien es cierto que se parece mucho a la implementación del patrón MVC, por Django la view describe qué datos serán presentadas y no como se verán. En el formato de los datos es donde entran en juego los templates.
Django aparenta implementar el patrón MVC, pero el “controlador” de MVC es llamado “vista” en Django y la “vista” de MVC es “template” en Django.
Se dice que el controller de un MVC clásico está representado por el propio Framework, es decir, el sistema que envía un pago a la vista correspondiente, de acuerdo con la configuración de URL de Django (archivo de configuración).
En el caso de querer hacer una correspondencia clara entre Django y MVC sería un Framework MTV: Modelo, Template, View. Teniendo en cuenta la arquitectura, veremos a grandes rasgos cómo se procesa un request en Django.
El flujo de datos se puede representar como:
Cuando Django recibe un petición request, lo primero que se hace es crear un objeto HttpRequest que la representa y servirá como abstracción para trabajar sobre diferentes servidores. Después se realiza la resolución de la URL. Esto consiste en seleccionar la función del view (a partir de la URL especificada en el request) que participará en la creación del response.
Una vez que hemos resuelto qué función resolverá la URL especificada, se invoca a la función view con la petición como primer parámetro. Aquí se realiza el trabajo pesado como:
- Consultas a la base de datos,
- Carga de templates y generación de HTML.
Se devuelve un objeto HttpResponse o una excepción.
Además, 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 solicitud HTTP, pero antes de resolver la URL, permitiendo modificar el objeto petición o volver una respuesta propia antes que el resto de la aplicación se 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. Se utiliza para realizar las modificaciones finales.
Requisitos mínimos del sistema para Django
Django para trabajar necesita tener instalado:
- Python
- Servidor web y mod_wsgi (Web Server Gateway Interface)
- Motor de base de datos. Según cuál instale es necesario añadir más paquetes.