Flask o Django: el framework adecuado para iniciar en el desarrollo web

No cabe duda que una de las principales metas de los nuevos programadores y amantes de la tecnología es la consolidación en el desarrollo web. La razón es sencilla: el auge que ha tenido el sector atrae a propios y extraños, haciendo que personas con educación en distintas disciplinas se interesen en las ciencias de computación y particularmente en profundizar en esta popular rama de la programación.

El hecho es que cada día parece incrementarse el número de “nuevos programadores” o personas que tienen interés en profundizar sus conocimientos con la esperanza de migrar laboralmente hacia estas carreras, mientras que otros más ambiciosos, buscan crear un nuevo boom web, tal como hiciera un joven Mark Zuckerberg en su dormitorio de Harvard, con  ayuda de algunos compañeros, allá por el año 2004.

Por inercia y como dijimos en un artículo relacionado a los mejores entornos para programar en Python, muchos de los neófitos -por lecturas o consejo de amigos cercanos-, deciden empezar con este lenguaje por su sintaxis limpia y la curva de aprendizaje que tiene en relación a otros lenguajes como C y Java.

Sin embargo, realizados los primeros pasos, es indispensable empezar a construir aplicaciones para aprender de manera práctica. Este concepto es vital en el aprendizaje de la programación, pues así medimos nuestras capacidades y nos enfrentamos a desafíos que nos obligan a profundizar en tópicos que desconocemos.

Así, el programador en muchos casos se topa con una encrucijada: que framework elegir para empezar a programar aplicaciones web.

¿Qué es un framework?

Aunque Wikipedia dice que un framework es un entorno de trabajo consistente en un conjunto estandarizado de prácticas y criterios, el mundo de la programación define de forma práctica a un framework como un grupo de herramientas reutilizables que hacen más fácil el desarrollo de proyectos específicos. En ese sentido hay frameworks para desarrollo web, para crear aplicaciones móviles e incluso para desarrollar juegos.

Existen muchos frameworks bastante famosos y de código abierto. Así vemos por ejemplo que Angular, es un conjunto de herramientas que permiten construir interfaces Front End a través del lenguaje Javascript, que es posible de realizar sin dicho framework, pero con mayor dificultad.

En el mundo del desarrollo web existen decenas de ejemplos, como Laravel con PHP, Express con Javascript, Ruby on Rails con Ruby. Y para nuestro particular interés, Flask y Django en Python.

Django: el framework para desarrollo web más famoso

Aunque el nombre pueda sonar a algún personaje del viejo oeste, Django es un potente framework en lenguaje Python destinado al desarrollo web escalable y de alta calidad.

Django fue diseñado para trabajar bajo un patrón modelo vista controlador, aunque es también definido como un MVT o modelo – vista – plantilla porque el framework se encarga del manejo de controladores, razón por la cual se dice que es reusable y permite el desarrollo ágil, una de las razones que generan su popularidad.

Flask: el micro framework para novatos

Otro gran contendiente en esta pugna es Flask. Flask es un framework basado en lenguaje Python que permite desarrollar aplicaciones web de forma sencilla. Se dice, que a diferencia de Django, está especialmente guiado para novatos.

Es muy fácil hacer comparaciones técnicas pero lo visual resulta contundente, así que te presentamos un Hola mundo escrito en Django y otro escrito en Flask (estructura básica de la ruta principal):

Hola mundo en Django:

Hola mundo en Flask:

A simple vista se puede notar que Flask es más “económico”, utilizando menor cantidad de líneas de código que Django. Esto es importante, dado que una de las prácticas habituales (pero no la mejor) de parte de los novatos es ver las líneas de código, o simplemente, estos se ven intimidados ante una gran cantidad de código para poner en marcha un sitio web.

En realidad, Flask es considerado un micro-framework que sigue la máxima de Unix que reza “Hacer sólo una cosa, pero hacerla bien”. Aunque en prestaciones Django es superior de por sí, la gran comunidad de desarrolladores que aporta contenidos en Flask lo ha puesto al mismo nivel de Django en utilidades y prestaciones.

Similitudes y diferencias entre Django y Flask

El REST framework de Django cuenta con un sistema de autentificación de usuarios, mientras que en Flask se pueden usar las opciones nativas para crear un sistema de autenticación básico, aunque si se desea algo más complejo, se puede crear un sistema de login API con Flask-HTTPAuth.

Ambos frameworks permiten un backend limpio en manejo de usuarios, pudiendo limitar memoria y velocidad para evitar caídas en el servidor.

Una diferencia significativa es la versatilidad que tiene Django en manejo de versiones, haciendo simple la distribución de actualizaciones (algo bastante común en desarrollo web) desde el formato URL (ejemplo.com/v1/ejemplo/, v1.ejemplo.com/ejemplo/, o ejemplo.com/ejemplo/?version=v1). Flask, por otra parte, permite el manejo de versiones pero es realizado por el desarrollador mismo e implica manejo de código más complejo y cambios en la plataforma.

Los API que genera Django REST son mucho mejores, pudiendo estos convertirse fácilmente en páginas HTML como puntos finales. Esto significa hacer solicitudes GET y POST fácilmente, algo que en Flask está bastante más condicionado.

Sin embargo, la velocidad de Flask es un punto que juega a su favor. Esto quiere decir que generalmente el desempeño en velocidad que tiene Flask es superior, esto generalmente por el diseño minimalista que tiene la estructura de Flask.

Todo lo expuesto demuestra que ambos son poderosos frameworks de desarrollo, pero si se desea iniciar la mejor alternativa es Flask, particularmente si el aprendiz es autodidacta, puesto que la documentación de Flask es amplia y permite realizar aplicaciones de forma fácil. Esto no quiere decir que sean aplicaciones de baja calidad, teniendo este micro framework adaptabilidad a bases de datos NoSQL pudiendo realizar aplicaciones completas y complejas.

Django debe ser, sin embargo, una de las metas finales de todo desarrollador web, toda vez que permite crear aplicaciones REST de forma sencilla una vez que se ha dominado su estructuración y existe una interesante bolsa de trabajo para personas capacitadas en este prometedor framework que crece cada día en popularidad.