Lo que tenés que saber si vas a aventurarte con Django

Vanesa manzanelli
Flux IT Thoughts

--

En este artículo trato de brindar un panorama de las ventajas y desventajas de utilizar este framework de Python, y argumentar por qué vale la pena aprender Django en un ecosistema donde predomina JS.

Django es un framework web diseñado para realizar aplicaciones en tiempos muy razonables. Está escrito en Python y tiene una comunidad muy amplia en continuo crecimiento. Originalmente se pensó para facilitar la creación de páginas webs, poniendo énfasis en el principio DRY (Don’t Repeat Yourself).

Pero antes que nada, debería contarles un poco que me llevó a escribirlo. Y para eso, debo comenzar contándoles que soy una estudiante autodidacta y que, además, antes de estudiar programación trabajaba tejiendo Amigurumis. O sea, no tenía idea de lo que era un servidor, una request, y un montón de otras palabras que me resultaban ajenas.

Durante la pandemia, un poco motivada por las ganas de llenar los espacios vacíos, me puse a curiosear con HTML; y fue el comienzo de algo que no tendría fin (quienes tomaron el mismo camino saben de lo que hablo).

No fue un camino fácil: todo era raro e incomprensible, pero tuve la suerte de llegar a una comunidad donde conocí personas que, con mucha paciencia y amor, me ayudaron a seguir y a no bajar los brazos.

En este recorrido conocí Django, aún sin entender bien muchas cosas básicas de programación. Pero gracias a su comunidad, a la documentación y a los tutoriales, de a poco todo se empezó a aclarar. Además, al ser uno de los frameworks más utilizados, me dio la posibilidad de conseguir mi primer trabajo en IT.

Ahora sí, les dejo mis conclusiones de este recorrido.

LAS VENTAJAS

1. ORM

Una de las características más importantes de Django es su ORM, que nos brinda una API de abstracción de base de datos con la que podemos crear, recuperar, actualizar y eliminar objetos. Es bastante intuitivo de usar e incluye casi todas las consultas SQL más comunes.

Consultas básicas SQL/ORM:

Con el ORM, crear una tabla en la base de datos es tan simple como crear una clase que herede de models. Model y Django se encargarán del resto.

Además soporta múltiples bases de datos, por lo que cambiar de motor (Postgres, MySQL, etc.) es bastante simple, y mediante algunos cambios en la configuración se puede migrar de uno a otro sin problemas.

El hecho de acceder a los datos a través del atributo objects, en vez de hacerlo directamente desde la clase Model, le agrega un poco de complejidad frente a otros frameworks como Ruby on Rails, donde se puede realizar la misma consulta de forma más corta y simple.

Si bien esto funciona, se complica cuando se necesita realizar consultas más complejas o agregar métodos propios a nuestra clase, en tal caso Django provee la clase Manager, pero esto agrega una capa más de abstracción y hace que el código sea más difícil de leer.

Ruby on Rails vs Django.

2. Django admin

Incluye una interfaz de administración dinámica que viene instalada por defecto, la cual implementa un CRUD a la base de datos de una manera sencilla.

El administrador de Django lee los metadatos de sus modelos para proporcionar una interfaz rápida y centrada en el modelo, donde los usuarios autorizados pueden administrar el contenido de su sitio. Además, cuenta con un sólido sistema de permisos para restringir el acceso a los datos según la necesidad del administrador.

El uso recomendado se limita a la herramienta de administración interna de una organización, no está diseñado para construir todo el front.

3. Sistema de autenticación

Otra de las ventajas de utilizar Django es que cuenta con un sistema de autenticación probado, basado en sesiones que se identifican por medio de una cookie que se utiliza en diferentes sitios web con mucho tráfico de datos (como por ejemplo Instagram o el sitio web de la NASA).

Además de usar la autenticación con sesiones por medio de una cookie, existen paquetes que permiten usarlo con JWT.

4. Sistema de permisos

Django cuenta con un sistema de permisos y grupos integrado, que vincula a los usuarios con modelos de la base de datos, y proporciona una forma de asignar permisos a usuarios y grupos de usuarios específicos.

Esta característica es muy útil y ayuda a ahorrar muchas líneas de código, ya que cada vez que se crea un modelo y se corren las migraciones, automáticamente se crean 4 permisos para ese objeto (add, change, delete y view).

Además el modelo User tiene una relación many-to-many con los modelos Permissions y Groups, encargados de guardar los permisos anteriores.

Con Django es muy simple establecer, eliminar y comprobar los permisos de los usuarios.

Desde el Django Admin o desde la terminal de Python, es posible organizar, asignar, remover o crear permisos personalizados por grupos de forma sencilla.

5. Múltiples paquetes

Gracias a la enorme comunidad de Python, Django cuenta con varios paquetes supervisados y mejorados cada día, para resolver muchos de los problemas comunes tales como la creación de APIs, el manejo de permisos y autenticación, etc. Algunos de los más utilizados son:

  • DRF (Django Rest framework).
  • Django-rest-auth (autenticación).
  • Django-filter (búsquedas).

LAS DESVENTAJAS

  1. Es un monolito:

Django cuenta también con gran cantidad de funciones y características para desarrollar una aplicación web, un ORM, un sistema de plantillas, middleware, etc., muchas de las cuales puede que nunca uses o no necesites.

2. Velocidad de Ejecución:

En la actualidad contamos con otras opciones más rápidas. Esto puede ser una desventaja si se busca sólo velocidad, pero no se puede hacer una comparación justa, ya que por ejemplo FastAPI únicamente se centra en crear APIs de forma simple y eficiente, mientras que Django, al ser una solución integral, ofrece otras características que FastAPI no tiene.

3. Curva de aprendizaje:

Contar con tantas características es muy útil a la hora de ahorrar líneas de código, pero se vuelve una desventaja a la hora de aprender a utilizarlas a todas.

Aprender a usar eficientemente el ORM, el middleware, las vistas, el manejo de URLs, etc., lleva mucho tiempo en comparación con otros frameworks como Flask o Express.

TLDR:

Por todo esto, es que pienso que Django es una muy buena opción para comenzar a aprender un framework backend, con el cual podrán desarrollar sitios web complejos en poco tiempo, y comprender cómo funciona cada proceso.

Si bien, como dije anteriormente, la curva de aprendizaje es lenta, la documentación es muy clara, con ejemplos y tutoriales que van desde lo básico hasta casos avanzados, a la cual se puede recurrir cuando surgen dudas o no se sabe cómo seguir.

Espero que este artículo sea de ayuda e inspiración para otras personas que, como yo, están buscando iniciar un camino en la programación.

Apps que usan Django:

  • Instagram.
  • The New York Times.
  • Pinterest.
  • Nasa Science.
  • Disqus.
  • Mercedes-Benz.
  • Orange.ch.
  • National Geographic.

Páginas útiles:

https://www.djangoproject.com/

https://djangogirls.org/es/

https://developer.mozilla.org/es/docs/Learn/Server-side/Django

https://djangochat.com/

https://adamj.eu/tech/2019/04/03/django-versus-flask-with-single-file-applications/

https://www.freecodecamp.org/espanol/news/para-que-se-utiliza-django-de-python-5-razones-claves-por-las-que-uso-el-framework-django-para-proyectos/

https://djangopackages.org/

https://forum.djangoproject.com/

Conocé más sobre Flux IT: Website · Instagram · LinkedIn · Twitter · Dribbble · Breezy

--

--