¿Qué es Flask (Python) y cuáles son sus ventajas?
Si tenemos que nombrar dos frameworks para desarrollo en Python uno de ellos sería Django, por supuesto, ya que es el más popular. Tampoco dudaríamos al señalar la otra alternativa: Flask. Este framework que lleva años ganando popularidad y expandiendo su comunidad. ¿Quieres saber más sobre esta herramienta para desarrollar proyectos web en Python?
¿Qué es Flask?
Flask es un framework para el desarrollo de proyectos web en Python. Muchos lo calificarían dentro del segmento de los «microframework», ya que tiene un enfoque minimalista y está orientado para un tipo de trabajos más específicos como servicios web y microservicios, en vez del renderizado de HTML como Django.
Flask fue creado por Armin Ronacher y lanzado por primera vez en 2010. Desde entonces su progresión ha ido siempre en aumento y cuenta con una comunidad grande, que prefiere desarrollar proyectos usando Flask, antes que caer en alternativas más pesadas como Django.
De todos modos, que sea un «microframework» no significa que Flask esté limitado a proyectos pequeños o que no tenga suficientes herramientas. En realidad significa que no impone ciertas capas y se centra solamente en resolver las solicitudes HTTP de una manera ágil y sencilla.
Ventajas de utilizar Flask en desarrollo web
La ventaja más relevante de Flask es que el desarrollador tiene una gran libertad a la hora de elegir las herramientas que mejor le convengan para cada proyecto, dentro de lo que ofrece el ecosistema de Python, que es enorme.
Ligero y minimalista
Su simplicidad hace que se considere un framework minimalista. Esto quiere decir que es sencillo de aprender y de aplicar a los proyectos. A la vez, lo hace muy ligero y especialmente indicado para aplicaciones pequeñas o medianas, donde estas características son más apreciadas.
Flexibilidad en la arquitectura
Como hemos dicho, Flask no impone una arquitectura específica en los proyectos. Sí que ofrece unas guías esenciales para resolver problemas básicos, pero los desarrolladores son libres para estructurar sus proyectos como deseen. Esto es ideal para equipos de trabajo que tienen costumbres de desarrollo ya establecidas y que desean que el framework se adapte a ellos en vez de que ellos tengan que adaptarse al framework.
Amplia comunidad y documentación
Uno de los puntos a favor de Flask es su creciente popularidad. Desde hace mucho tiempo se viene postulando como una alternativa seria a Django, al menos para proyectos de APIs y aplicaciones pequeñas o medianas, donde importa el rendimiento y la velocidad de adaptación de equipos consolidados.
Soporte para extensiones y complementos
Por supuesto, es capaz de adaptarse a numerosos complementos. Por ello, aunque tenga un enfoque minimalista puedes aplicar extensiones y herramientas del ecosistema de Python, por lo que las posibilidades en realidad son tan potentes como las que tendrías usando soluciones más complejas.
Compatible con WSGI y Jinja2
Flask está basado en WSGI, que es un estándar de Python para el desarrollo de aplicaciones web (siglas de Web Server Gateway Interface). Eso hace que la comunidad de Python se sienta muy cómoda al usarlo, ya que su forma de trabajar le resultará familiar si viene de otros proyectos.
Además usa el motor de plantillas Jinja2, que permite generar HTML dinámico renderizado en el lado del servidor. Aunque a decir verdad este no es el uso más frecuente de Flask, ya que la mayoría de los proyectos desarrollados con este framework son servicios web que devuelven JSON como respuesta.
¿Cómo empezar a usar Flask en Python?
Si quieres empezar a usar Flask en un proyecto simplemente necesitas tener un conocimiento de medio a avanzado de Python. Vamos a resumir algunos pasos básicos para comenzar.
Instalación de Flask paso a paso
Antes de empezar a usar Flask, como recomendación, te sugerimos crear un entorno virtual para mantener las dependencias del proyecto aisladas.
Una vez lo tengas puedes instalar las dependencias con este comando:
```bash pip install Flask ```
Luego, usar Flask en tu proyecto será tan sencillo como crear una aplicación y comenzar a definir rutas, con las respuestas que deberían entregar a los clientes que las consulten.
from flask import Flask app = Flask(__name__) @app.route('/') def hola_mundo(): return '<p>Hola Mundo en Flask!</p>'
Estructura básica de una aplicación en Flask
Como has podido comprobar en el código anterior, una aplicación Flask requiere muy poco para comenzar. La estructura básica consiste en la definición de rutas mediante @app.route. Para cada ruta luego se asociarán funciones que se encargarán de procesarlas.
Por supuesto, a medida que vayamos necesitando mayor organización del código podremos estructurar nuestra aplicación en múltiples archivos y carpetas. Por ejemplo, es común separar las rutas en blueprints, los modelos en un archivo independiente, y la configuración en un módulo propio.
Creación de rutas y vistas en Flask
Como viste en el ejemplo básico, las rutas en Flask se definen con decoradores como `@app.route()`.
A cada ruta se le asocia una función que se encarga de preparar la salida. Esa función es la vista. Por supuesto, Flask permite manejar distintos métodos HTTP, como GET o POST, etc. facilitando la creación de aplicaciones de gestión y API.
Integración con bases de datos
En el apartado de las bases de datos Flask nos deja bastante sueltos. Eso quiere decir que en la práctica seremos capaces de trabajar con cualquier base de datos compatible con Python.
Si el proyecto lo requiere es común usar un ORM, en cuyo caso una alternativa muy recurrente es SQLAlchemy, que puedes integrar de manera sencilla mediante la extensión `Flask-SQLAlchemy`.
Casos de uso de Flask en proyectos web
Flask es ideal para proyectos web de tamaños pequeños y medianos. Algunos de los casos de uso más frecuentes son los siguientes.
Aplicaciones web ligeras y API RESTful
Flask es una excelente alternativa para el desarrollo de servicios web. Nos referimos principalmente a APIs RESTful que devuelven los datos en JSON. De hecho, este es el caso de uso más frecuente en el que se aplica el framework.
Prototipado rápido de aplicaciones
Su sencillez y la facilidad que presenta al iniciar un nuevo proyecto con Flask lo hacen ideal para tareas de prototipado rápido de aplicaciones. De todos modos, también es escalable. Esto quiere decir que, aunque al principio el desarrollo se haya planteado como un mero prototipo, es perfectamente viable su crecimiento hasta convertirse en un proyecto sólido.
Desarrollo de microservicios
Otro área donde Flask se usa bastante, de nuevo por su sencillez y ligereza, es el desarrollo de microservicios. Además, su diseño modular lo hace perfecto para escoger de manera muy específica las herramientas que se requieren para cada uno de los servicios independientes.
Diferencias clave entre Flask y Django
Aunque estos frameworks comparten el lenguaje sobre el que están construidos y muchas de las funcionalidades que pueden cubrir están solapadas, estamos ante dos propuestas bastante distintas. Vamos a ver sus diferencias clave.
Enfoque de desarrollo: Microframework vs. Full-Stack
Como hemos dicho, Flask se acoge más a la filosofía de microframework modular. Brinda lo esencial y deja el resto ligado a las necesidades del proyecto y a la elección del equipo de desarrollo.
Por su parte, Django es lo que consideramos un framework Full-Stack, que aporta soluciones para todo el ciclo de desarrollo, desde la parte del backend hasta la parte del frontend.
Facilidad de uso y curva de aprendizaje
Flask puedes aprenderlo y comenzar a usarlo en unas unas horas. Sin embargo, dominar Python te llevará meses y la participación en múltiples proyectos.
De todos modos, cabe decir que Flask es capaz de ampliar sus horizontes para volverse un framework complejo, a medida que instalamos complementos o adoptamos bibliotecas del ecosistema de Python.
Flexibilidad y modularidad en la arquitectura
Flask es muy flexible a todos los niveles y también te deja muy libre en lo que respecta a la arquitectura. Esto puede ser bueno en unos casos pero no tanto en otros. Por ejemplo, el hecho de Django tener una estructura más definida, también colabora a que los desarrolladores sigan unas directrices más fijas, lo que ayuda a la estandarización de los proyectos y a que otros desarrolladores puedan unirse a ellos solamente con sus conocimientos previos de Django.
Gestión de bases de datos y ORM
Django incluye su propio ORM que viene instalado de casa. Por su parte, Flask no lo tiene de manera predeterminada, lo que quiere decir que tendrás que instalarlo si lo necesitas. Afortunadamente tienes extensiones que te ayudan mucho a resolver estas hipotéticas necesidades del proyecto.
Rendimiento y escalabilidad en aplicaciones web
Flask es notablemente más ligero y debido a eso, en principio, podemos asumir que tendrá un mejor rendimiento que Django, aunque todo depende al final de lo complejo que sea el proyecto.
Los dos son escalables en su medida, ya que la ligereza de Flask puede dar la posibilidad de atender más tráfico y la arquitectura avanzada de Django puede permitir una mejor organización del código, lo que facilitará el desarrollo de aplicaciones grandes.