Coffee bytes

Apuntes de desarrollo web con GNU/Linux, Python y Javascript

¿Por qué deberías usar Django Framework?

El martes, 23 de marzo de 2021

por Eduardo Zepeda

Tiempo de lectura: 4 minutos

¿Por qué usar Django en un mundo donde todo es Javascript? ¿De verdad vale la pena aprender un Framework de Python en un ecosistema que se empecina en Frameworks escritos en Javascript? Pues yo creo que sí y a continuación te expongo algunas de las razones.

Las ventajas de Django

Su ORM es sencillo y maravilloso

El ORM de Django abstrae la necesidad de escribir consultas SQL para crear tablas y consultar datos. Es bastante intuitivo de usar y tiene incluidas casi todos las consultas más comunes en su código. Desde filtrados, particionados, uniones e incluso hasta funciones avanzadas de Postgres.

Para crear una tabla en la base de datos basta con crear un modelo y Django se encargará de todo el trabajo pesado.

class Review(models.Model):
    title = models.CharField(max_length=25)
    comment = models.TextField()
    name = models.CharField(max_length=20)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    product = models.ForeignKey(
        Product, related_name="reviews", on_delete=models.CASCADE)
    user = models.ForeignKey(
        get_user_model(), related_name="reviews", null=True, on_delete=models.SET_NULL)

Además de lo anterior, su ORM soporta múltiples bases de datos, por lo que cambiar de motor de base de datos es bastante sencillo y tras unos pocos cambios puedes migrar perfectamente de Postgres a MySQL o viceversa, únicamente cambiando un par de lineas en la configuración.

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

Su única desventaja es su velocidad, pues se queda corto frente a otras alternativas como sqlAlchemy.

Panel de administrador incluido

Django cuenta con un panel administrador que viene instalado por defecto. Este administrador te permite (o a tus clientes) efectuar cualquiera tarea CRUD de una manera sencilla. Y, además, cuenta con un sistema de permisos para restringir el acceso a los datos como tu quieras.

Ofrece seguridad ante los ataques más comunes

Django incluye ciertas utilidades, que se encargan de mitigar la mayoría de los ataques tales como XSS, XSRF, injecciones SQL, Clickjacking y otros. La mayoría ya están disponibles y basta con solo agregar el middleware o etiqueta de plantilla correspondiente.

<form method="post">{% csrf_token %}

Autenticación probada

Este framework cuenta con un sistema de autenticación probado, basado en sesiones que se identifican por medio de una cookie. El sistema de autenticaciones ya ha sido puesto a prueba en numerosas ocasiones por algunos de los sitios web con más tráfico que hay, como Instagram o Pinterest.

DRF y demás paquetes

Django cuenta con muchísimos paquetes para resolver la mayoría de los problemas comunes, además son paquetes supervisados y mejorados por la comunidad logrando una calidad impresionante.

Solo por nombrar algunos:

  • Django-watson
  • DRF
  • Django-allauth
  • Django-filter
  • Django-storage
  • Django-braces

Entre todos ellos me gustaría resaltar DRF (Django Rest Framework) que vuelve la creación de una API, permisos y throttling, una tarea mucho más corta que en otros lenguajes.

Te lleva de una idea a un prototipo funcional rápido

Yo considero esta la razón principal para usar Django. Django te lleva de una idea a un MVP rápido y sin necesidad de reinventar la rueda. Lo cual es una ventaja competitiva gigantesca frente a otros frameworks, especialmente cuando hay dinero y clientes involucrados.

Las desventajas de Django

No todo es mágico con Django, hay algunas cosas que cambiaría sin dudarlo de Django.

Es un monólito

Django es un Framework antiguo, con todo lo que se necesita para desarrollar una aplicación web, un ORM, un sistema de plantillas, middleware y muchas otras piezas que, están ahí y son requeridas para que el framework funcione, las necesites o no.

Su antigüedad le da robustez y madurez, es una solución probada miles de veces pero es una tecnología a le que le cuesta mantener el ritmo en un mundo de llamadas API y web sockets.

Es lento y maneja peticiones de una en una

Python es un lenguaje que se hizo para ser bello y simple, no necesariamente rápido. Sumado a lo anterior, Django tampoco brilla por su velocidad a la hora de ejecutarse. En la carrera por ser un framework veloz, está por debajo de tecnologías más modernas como Flask o FastAPI. Entra en mi entrada sobre FastAPI si quieres comparar sus velocidades.

Curva de aprendizaje moderada

Django sigue la filosofía de baterías incluidas. Lo cual es bueno, porque es código que te ahorras al escribir, pero también malo, pues es código que necesitas aprender a usar: el ORM con modelos y consultas, el middleware, las vistas, DRF (para las APIs) o el sistema de plantillas, el manejador de urls, traducción de cadenas de texto, etc. Aprender todo lo anterior implica más tiempo, que lo que te tomaría aprender otros Frameworks; como Flask o Express.

TLDR

Desde mi punto de vista las ventajas superan a las desventajas, por lo que yo lo considero una opción muy atractiva para desarrollar un sitio web complejo. Al final, como siempre, este es mi punto de vista y cada persona tiene el suyo. Espero que este post te haya mostrado algo que no habrías considerado sobre Django antes de leerlo.

¿Quieres aprender más?

Sígueme en Twitter y te aviso cuando tenga nuevo contenido disponible. ¡Es gratis!

¿Te pareció útil esta información?

Recibe más contenido como este en tu correo electrónico. Suscríbete, te toma unos segundos, es gratis, y puedes cancelar cuando quieras

* Campo obligatorio