Flask es un "micro" framework escrito en Python y concebido para facilitar el desarrollo de aplicaciones Web bajo el patrón MVC.
Podemos definir framework como un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación. En general los framework están asociado a lenguajes de programación (Ruby on Rails (Ruby), Symphony (PHP),...).
Las ventajas tiene utilizar un ‘framework’ pueden ser:
- El programador no necesita plantearse una estructura global de la aplicación, sino que el framework le proporciona un esqueleto que hay que "rellenar".
- Facilita la colaboración. Cualquiera que haya tenido que "pelearse" con el código fuente de otro programador sabrá lo difícil que es entenderlo y modificarlo; por tanto, todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los desarrollos colaborativos.
- Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.
Después de estudiar la unidad: Introducción a la programación web con python llegamos a la conclusión de que es necesario de utilizar un framework para ayudarnos a gestionar las peticiones y generar las respuestas correspondientes. Si utilizamos python como lenguaje de programación web tenemos a nuestra disposición un conjunto de framework: Web Frameworks for Python.
- Flask es un "micro" framework: se enfoca en proporcionar lo mínimo necesario para que puedas poner a funcionar una aplicación básica en cuestión de minutos. Se necesitamos más funcionalidades podemos extenderlo con las Flask extensions.
- Incluye un servidor web de desarrollo para que puedas probar tus aplicaciones sin tener que instalar un servidor web.
- También trae un depurador y soporte integrado para pruebas unitarias.
- Es compatible con python3, por lo tanto podemos usar la codificación de caracteres unicode, y 100% compatible con el estándar WSGI.
- Buen manejo de rutas: Con el uso de un decorador python podemos hacer que nuestra aplicación con URL simples y limpias.
- Flask soporta el uso de cookies seguras y el uso de sesiones.
- Flask se apoya en el motor de plantillas Jinja2, que nos permite de forma sencilla renderizar vistas y respuestas.
- Flask no tiene ORMs, wrappers o configuraciones complejas, eso lo convierte en un candidato ideal para aplicaciones ágiles o que no necesiten manejar ninguna dependencia. Si necesitas trabajar con base de datos sólo tenemos que utilizar una extensión.
- Este framework resulta ideal para construir servicios web (como APIs REST) o aplicaciones de contenido estático.
- Flask es Open Source y está amparado bajo una licencia BSD.
- Puedes ver el código en Github, la documentación es muy completa y te puedes suscribir a su lista de correos para mantenerte al día de las actualizaciones.
Ya hemos visto la lista de extensiones que nos permite ampliar la funcionalidad de Flask, en este curso vamos a utilizar las siguientes:
Flask-Script
: La extensión flask-script nos proporciona la posibilidad de gestionar nuestra aplicación flask desde una comando (Interfaz de línea de comando).Flask-Bootstrap
: si queremos trabajar con plantillas que utilicen como hoja de estilos y javascript el framework bootstrap podemos ulizar la extansión Flask-Bootstrap.Flask-WTF
: Flask-WTF es una extensión de Flask que nos permite trabajar con la librería WTForm de python, que nos facilita la generación y validación de formularios HTML.Flask-Sqlalchemy
: Usaremos la extensión Flask-SQLAlchemy que nos provee un wrapper para el proyecto SQLAlchemy, el cual es un Object Relational Mapper o ORM.Flask-Login
: Flask-Login es una librería que nos proporciona la posibilidad de gestionar las sesiones de nuestros usuarios.