Desarrollo con Flask

Flask es un framework ligero escrito en Python y concebido para facilitar el desarrollo de aplicaciones Web bajo el patrón MVC, similar a Sinatra de Ruby o Express de Node.js. El término “ligero” quiere decir que su núcleo dispone de un número reducido de características, las mínimas para implementar las abstracciones del protocolo HTTP y su manipulación. Esto significa que no tiene ORM (Object-Relational Mapping), gestión de formularios, autenticación, etc., pero es fácilmente extensible y pueden añadirse paquetes según las necesidades y la libre elección del desarrollador. Por ejemplo, tiene integración con SQLAlchemy, un popular ORM de Python, podemos añadir los procesos de registro y autenticación con Flask-Security, conectar con redes sociales mediante Flask-Social o implementar tests A/B con Flask-Split.

Gracias a estas características Flask nos ayuda a acortar el time-to-market de productos distribuidos en forma de aplicación Web y por otro lado nos permite elegir siempre las extensiones que mejor se adapten a nuestras necesidades, manteniendo siempre el código limpio, ligero y fácilmente mantenible.

De momento, a modo de introducción, vamos a crear una aplicación tipo “Hola Mundo” en Flask. El objetivo no es conocer Flask a fondo, si no aprender a crear un entorno y unas dependencias para poder, en siguientes artículos, desarrollar rápidamente ejemplos más complejos en los cuáles se vean las ventajas del uso de Flask en nuestros proyectos.

Instalando las herramientas

Suponiendo que ya tengamos instalado Python en nuestra máquina, lo primero que vamos a hacer es crear un entorno virtual con virtualenv y pip. La herramienta virtualenv permite instalar librerías python de forma privada a un proyecto, lo cual facilita la recreación del entorno en otras máquinas diferentes a la que hemos usado para iniciar el proyecto. Por otro lado, pip es un instalador de paquetes de python. Primero vamos a instalar pip, ya que lo usaremos para gestionar el resto de dependencias, incluida la de virtualenv. La documentación recomienda descargar el script get-pip.py y ejecutarlo con nuestro runtime de python (necesita permisos de administrador, en el caso de unix/linux bastaría con ejecutarlo con sudo).

$ python get-pip.py

Una vez instalado pip vamos a usarlo para instalar virtualenv. Con pip es muy sencillo (también son necesarios permisos de administrador):

$ pip install virtualenv

Creando nuestro entorno

Vamos a desarrollar un sencillo “Hola Mundo” en Flask. Para ello, lo primero que tenemos que hacer es crear una carpeta para nuestro proyecto, que llamaremos “hola-flask”:

$ mkdir hola-flask
$ cd hola-flask

Una vez dentro de la carpeta, crearemos el entorno virtual con virtualenv

$ virtualenv env

y una vez creado, lo activamos

$ source env/bin/activate

Sobre el entorno activado podemos instalar las dependencias que necesitemos en nuestro proyecto. En este caso no es necesario tener privilegios de administrador porque vamos a ejecutarlo dentro de nuestro propio entorno. Para nuestro “Hola Mundo” sólo necesitamos Flask:

(env)$ pip install flask

Ya estamos listos para desarrollar nuestra primera aplicación con Flask.

Desarrollando “Hola Mundo” con Flask

La estructura del proyecto consistirá en el script principal en python y un template jinja2, que es el motor de templates integrado en Flask. Por defecto, los templates en Flask deben declararse dentro de una carpeta “templates” colgando del raíz del proyecto.

app.py
templates/
hola.html

Donde app.py consistiría en la definición del controlador “hola”, sus rutas asociadas y el arranque de la aplicación

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/hola/')
@app.route('/hola/')
def hola(nombre=None):
return render_template('hola.html', nombre=nombre)

if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)

y hola.html define la vista asociada al controlador “hola”:

<!DOCTYPE html>
<title>Hola desde Flask</title>
{% if nombre %}

¡Hola {{ nombre }}!

{% else %}

¡Hola Mundo!

{% endif %}

Ya podemos arrancar nuestra aplicación, usando el runtime de python:

$ python app.py

y podemos acceder a ella desde http://localhost:5000/hola/Caracola

Puedes ver el código fuente completo de este ejemplo en nuestra cuenta de github.

soporte aspa cloud

Déjanos ayudarte a elegir el producto que mejor se adapta a tus necesidades. Indícanos tu teléfono o email y nos ponemos en contacto contigo.