Flask, el micro-framework multiuso
Flask se diferencia de otros frameworks escritos en Python por su diseño ligero y robusto que permite al desarrollador crear una aplicación a medida utilizando extensiones sin cargar el producto resultante con funcionalidades innecesarias. En este artículo vamos a ver algunas de sus características y cómo puede ser usado para diferentes tipos de proyectos.
Micro-framework
Flask es un framework web escrito en Python liberado bajo la licencia BSD. La característica que más lo destaca de otros frameworks similares es la autodenominación de micro-framework ya que, a diferencia de otros frameworks como Django o CherryPy Flask tienen un diseño minimalista manteniendo su núcleo simple pero extensible.
Un problema común al trabajar con frameworks es el trabajo extra y muchas veces dificultoso al intentar desarrollar funcionalidades para las cuales este no estaba diseñado. A esta problemática se le suma el espacio extra que se requiere para almacenar partes de el framework que se está utilizando para el desarrollo que contiene funcionalidades que no son necesarias para nuestra aplicación. Algunos ejemplos comunes de este problema es cuando el framework utilizado tiene una capa de abstracción por defecto para trabajar con base de datos SQL y nuestro proyecto utiliza una base de datos no relacional o ninguna base de datos o cuando nuestro framework tiene soporte para algunos métodos de autenticación pero no aquel con el que deseamos trabajar.
Flask por defecto no contiene:
- Capa de abstracción para base de datos
- Métodos de autenticación
- Métodos de validación y manejo de formularios
En lugar de esto Flask está diseñado para ampliar sus funcionalidades a través de la instalación de extensiones que serán elegidas por el desarrollador de acuerdo a sus necesidades específicas. A pesar de esto Flask sí utiliza algunas librerías por defecto:
Jinja2
Jinja es un motor de templates rápido y extensible encargado de manejar las plantillas y renderizarlas como vistas para la aplicación. Flask utiliza este motor por defecto aunque también ha sido integrado en otros frameworks como Django y Babel.
Werkzeug
Werkzeug es una de las bibliotecas de aplicaciones web WSGI más utilizadas. Entre otras cosas esta librería contiene un sistema de ruteo que permite asociar endpoints de la aplicación a URLs, generar URLs a partir de endpoint y capturar variables a partir de URLs.
Click
Click (Command Line Interface Creation Kit) es un paquete escrito en Python que permite crear interfaces de linea de comando de manera sencilla y con pocas lineas de código. Al instalar Flask se instalará automáticamente un script de Click que permitirá acceder desde la terminal a todos los comandos definidos por Flask o por las extensiones instaladas.
Extensiones
Las extensiones de Flask son paquetes que permiten agregar funcionalidades específicas al framework. Ellas nos van a permitir integrar el uso de base de datos a través de un ORM, manejar la validación de datos de formularios, seleccionar e implementar métodos de autenticación o incluso desarrollar una API REST.
Flask-RESTful
Esta extensión facilita el proceso de crear una API REST utilizando Flask. Permite trabajar con cualquier ORM ya instalado y crear recursos y endpoints de manera sencilla y sin necesidad de agregar demasiado código.
Flask-SQLAlchemy
Agrega un soporte para integrar la librería SQLAlchemy con FLask. SQLAlchemy en un conjunto de herramientas y ORM en Python para bases de datos SQL. Esta extensión permite el uso sencillo de cualquier tipo de base de datos SQL en nuestra aplicación sin necesidad de tener un conocimiento profundo de SQL y manteniendo una independencia entre la base de datos y el código.
Flask-Mail
Flask-Mail aporta un conjunto de funcionalidades que facilitan la implementación de envío de mails. Con un par de lineas de código es posible armar un mensaje, seleccionar los destinatarios y realizar el envío. Adicionalmente tiene soporte para envíos masivos y envío de archivos adjuntos.
Flask-WTF
Agrega un soporte para integrar la librería WTForms con Flask. WTForms es una librería en Python para el renderizado y validación de formularios. Permite especificar, validar, renderizar y manipular los formularios desde el código. Incluye soporte para validaciones personalizadas, protección CSRFI e internacionalización.
Flask-Login
Esta extensión permite el manejo de sesiones dentro de la aplicación. Maneja las funcionalidades básicas de login y logout como así también la de mantener sesiones, obtener información de las mismas y proteger rutas de accesos no autorizados. Un aspecto interesante de esta extensión es que no está limitada a un método de autenticación en específico, puede utilizarse con una autenticación de contraseña en base de datos, token de autenticación u otro método de autenticación externa.
Se pueden encontrar otras extensiones en PyPI o pueden obtenerse directamente de los repositorios de sus creadores.
Esto fue una breve introducción al framework Flask y sus utilidades. En el siguiente artículo veremos como instalar Flask y crear nuestra primera aplicación. Espero que sea de utilidad!