Cuando pensamos en el desarrollo web con Python muy probablemente se nos viene a la mente el Framework web Django, uno de los frameworks más populares en la actualidad, sin embargo es importante mencionar que este no es el único framework que podemos utilizar para desarrollar aplicaciones web con Python, no, de hecho existen otras muy buenas opciones en el mercado, tal y como lo puede ser Flask; y de hecho, de este framework web me gustaría que habláramos el día de hoy. Me gustaría que explicaramos si realmente vale la pena aprender y dominar Flask, es que casos utilizarlos, y si es o no, mejor que Django. 😱
Una vez dicho esto comencemos. 👻
Flask
Bien, comencemos con la pregunta obligada, ¿Qué es Flask? Para todas aquellas personas que aún no lo sepan dejen les explico. Flask es auto denominado como un microframework de python para crear aplicaciones web, es decir, páginas web dinamicas, APIs, etc ... Aquí lo interesante es la palabra microframework.
A diferencia de Django, un framework con baterias incluidas, en donde con el simple hecho de crear un proyecto ya tendremos listo para utilizar: un manejador de rutas, un manejador de migraciones, un ORM, vistas basadas en clases, middlewares, un gestor de autenticación de usuarios y muchas cosas más, con Flask esto no es así. Con Flask literalmente estaremos trabajando en un lienzo en blanco, donde nos apoyaremos de sus módulos por default, y, sí así lo deseamos de bibliotecas de terceros. 😋
Y lo digo enserio, con flask seremos nosotros quienes creemos cada unos de nuestros modulos y archivos, importando o creando o que necesitemos.
Con Flask al comenzar con un proyecto "limpio" solo integraremos lo que realmente necesitemos, logrando así un mayor control sobre nuestro código. Esto desde mi perspectiva es un punto a favor. Si bien es cierto que muy probablemente nos lleve un poco más de tiempo configurar dependencias al proyecto, creo que ese tiempo invertido se ve recomenzando con un auto control del proyecto, evitando así de posibles "Cajas negras" y conociendo a la perfección cada parte del proyecto. Aunque el tema del tiempo tampoco debería ser un gran problema, ya que Flask es muy fácil de aprender y dominar. Y esto me lleva a otro punto, la curva de aprendizaje.
Veamos un simple hola mundo con Flask.
from flask import Flask
app = Flask(__name__)
app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
En este caso con Flask nos toma un promedio de 9 líneas de código tener un servidor completamente funcional. Si replicamos el hola mundo en Django, 9 líneas de código no serán suficientes. 😲
Como mencionamos anteriormente al crear un proyecto Django, este comenzará con muchas dependencias, que, para una persona que está comenzando muy posiblemente llegue hacer algo abrumador; y lo digo a título personal. Yo aprendía desarrollar aplicaciones web con Django, y siendo muy sinceros, Django no tiene una curva de aprendizaje muy baja que digamos; por lo menos para a mi sí me tomó tiempo comprender cómo funcionaban sus vistas, sus templates, el ORM (que por si solo podemos dedicarle un vídeo completo) y muchas cosas más.
Es por ello que de forma personal, si estás por comenzar a desarrollar aplicaciones web con Python, Yo te recomiendo que Django no sea tu primera opción, mejor comienza con algo mucho más sencillo, como lo puede ser Flask.
Ok, entonces ¿ Me estas diciendo que Flask solo funciona para proyectos pequeños? No, nada de eso, de hecho en el mundo de Flask existen cientos de dependencias que nos ayudarán a crear proyectos web robustos y escalables. ¿Quieres conectarte a una base? no te preocupes puedes implementar el ORM que más te agrade, ¿Quieres versionar tu API? De seguro encontrarás una biblioteca para tus necesidad, ¿Quieres integrar migraciones y un shell interactivo de tus modelo? claro que puedes, yo te recomiendo Flask Manager. 👻 Enserio, la comunidad es muy activa en ese aspecto, muchas cosas nativas de Django puedes encontrarlas como dependencias de Flask y si no, que mejor oportunidad para crear una.
Si tu aplicación comienza a crecer y necesitas más funcionalidades, no te preocupes, podrás ir incorporando al proyecto lo que realmente necesites. 🐍🤠
Que la palabra microframework no te confunda. Con Flask podremos crear aplicaciones web robustas, con buenas prácticas de programación, escalables y fáciles de mantener.
Todo lo que puedes hacer con Django podrás hacerlo con Flask, que de eso no te quepa la menor duda. Definir rutas, trabajar con formularios, renderizar templates, enviar correos electrónicos, definir pruebas unitarias, todo eso y mucho más con Flask podrás hacerlo.
Ahora, si ya eres desarrollador web Python y utilizas Django, quizás te preguntes ¿En que casos debería usar Flask sobre Django? Mi respuesta es simple, cuando te encuentres trabajando con microservicios, serverless o internet de las cosas. Sí, porque dejame decirte que puedes levantar un servidor Flask en una raspberry. Al ser Flask un Framework "simple" es perfecto para estos 3 escenarios.
Conclusión
En conclusión puede decir que Flask es una excelente opción para todas aquellas personas que quieren comenzar en el desarrollo web con Python, no limitandonos a solo desarrollar aplicaciones simples, no, nada de eso. Con Flask, si así lo deseamos podemos integrar la n cantidad de dependencias que necesitemos para tener proyectos profesionales, robustos y escalables.
Una vez domines Flask te aseguro que moverte a Django te será muy sencillo, o, sí así lo deseas puedes continuar con Flask, que también es válido y una muy buena idea. 😎
Si quieres aprender Flask yo te recomiendo 3 recursos.
- Flask Web Development: Developing Web Applications with Python Un excelente libro.
- Taller para crear APIs con Flask
- Curso Profesional de Desarrollo Web con Python
Flask me gusta muchisimo, quizás el unico astericos que le pondría es su logo. 😅