Este será el comienzo de una aventura en la cual aprenderás a desarrollar aplicaciones con el framework de Python, Flask.
Puedes descargar el resultado final de la primera app que vamos a crear a lo largo de este curso en este repositorio de github, descarga los archivos fuente desde aquí.
Flask es un framework de desarrollo web escrito en Python. Muchas veces es clasificado como micro-framework, ya que no requiere herramientas adicionales ni paquetes extra para ser utilizado. Es compatible con extensiones que pueden agregar funcionalidades como si estuvieran implementadas directamente en Flask. Actualmente hay extensiones para Flask que agregan muchas de las funcionalidades que tienen otros frameworks.
Flask está implementado en sitios web como Pinterest y LinkedIn.
Antes de iniciar, es necesario que tengas Python instalado en tu sistema. Para eso te recomendamos este post.
Luego de esto, para evitar futuros problemas de compatibilidad, se crea un entorno virtual o virtual environment. Un entorno virtual es una herramienta que ayuda a mantener separadas las dependencias de nuestros proyectos. Su uso permite, por ejemplo, tener instalado Flask 1.0.0 para un proyecto y Flask 1.1.1 para otro, evitando así, posibles problemas de compatibilidad entre las distintas versiones. Esta herramienta es útil para cualquier practica de programación (no solo para Flask).
Lo que hace este entorno virtual es crear una “copia” del interprete de Python y permite que lo usemos e instalemos en el cualquier paquete que sea necesario, sin necesidad de alterar el interprete de Python original o el desarrollo de otro proyecto.
Luego de Python 3.4, el soporte de entornos virtuales viene incluido en la versión de Python, por lo tanto, se pueden crear entornos virtuales desde la terminal con el siguiente comando:
$ python3 -m venv entorno
En caso de que no esté instalado o la terminal arroje algún error se tienen dos posibilidades:
$ sudo apt install python3-venv
De esta forma, se descargará e instalará todo lo necesario para que se puedan crear entornos virtuales con el comando anterior.
En linux:
$ sudo apt install python3-virtualenv
En windows:
pip install virtualenv
Este comando creará el entorno virtual con el interprete de python que el sistema tenga definido por defecto. En caso de que se quiera escoger una versión de Python distinta, se usa el mismo comando con un flag que permite escoger la versión de Python. Por ejemplo, si en nuestro sistema tenemos Python 2 por defecto y queremos que el entorno virtual tenga por defecto Python 3, se usa ejecuta el siguiente comando:
En linux:
$ virtualenv -p python3 "Nombre que le pondrás a tu entorno"
En windows:
python -m venv "Nombre que le pondrás a tu entorno"
Esto creará el entorno virtual con Python 3.
Para el objetivo que tenemos, crearemos un directorio llamado flask1 y entraremos en el. En este directorio crearemos el entorno virtual y será el lugar donde estarán todos los archivos de nuestro proyecto. Esto es:
$ mkdir flask1 && cd flask1 && mkdir env
Luego, debemos instalar los archivos de Flask en nuestro entorno. Para esto utilizaremos el gestor de paquetes de Python, pip, el cual descarga todo de PyPi, el repositorio oficial de los paquetes de Python, y hace la instalación.
De forma general, pip, descarga los paquetes con el siguiente comando:
$ pip install <nombre del paquete>
Como queremos instalar Flask en nuestro entorno virtual, necesitamos activarlo primeramente. Para esto, estando situados en la carpeta “flask1“, ejecutamos el siguiente comando:
En linux:
$ "nombre de tu entorno"/bin/activate
En windows:
"nombre de tu entorno"\scripts\activate
En mi caso, le di al entorno el nombre “env” una vez activado el entorno, nos aparecerá el nombre del entorno en la terminal de la siguiente manera:
(env) λ ~/flask1 $
Con el entorno virtual activo, procedemos a instalar Flask utilizando pip:
$ pip install flask
Si estamos utilizando Python 3, entonces se utiliza pip3:
$ pip3 install flask
En Linux, el comando para instalar Flask es:
$ sudo apt install python3-flask
Para probar que todo esté bien, crearemos una pequeña aplicación con Flask, que diga “Hola, Mundo”.
En un archivo que llamaremos app.py vamos a utilizar el siguiente código:
from flask import Flask app = Flask(__name__) @app.route('/') def Hola(): return 'Hola Mundo Flask es facil!' if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8080)
Con este simple código acabamos de crear nuestro “Hola Mundo” en nuestro localhost y para verlo 1º ejecutamos el código. Al ejecutar el código en la consola de python (en mi caso, la consola de spyder ya que tengo anaconda) me parece los siguiente:
La imagen de arriba nos dice que ya funcionando nuestra aplicación. Para ver el resultado escribimos en el navegador -> localhost:8080/ y nos debería aparecer en cualquier navegador una imagen como la siguiente:
Ahora vamos a hacer lo mismo que antes pero separadamente para que se entienda mejor lo que estamos haciendo. Primero que nada esta va hacer la estructura de nuestro pequeño proyecto:
blog/ app/ __init__.py rutas.py blog.py .flaskenv
Necesitamos crear una carpeta blog en la que hay un archivo blog.py y dos carpetas (venv y app). Dentro de la capeta app se encuenta los archivos __init__.py y rutas.py, y en la raíz de nuestro proyecto los archivos blog.py y .flaskenv.
Los codigos de los archivos python son los siguientes:
-rutas.py
from app import app @app.route('/') @app.route('/index') def index(): return "Hola Mundo!"
-__init__.py
from flask import Flask app = Flask(__name__) from app import rutas
-blog.py
from app import app
Vamos a instalar ahora una librería que nos ayudará a mantener nuestras variables de entorno configuradas en un archivo llamado .flaskenv, a través del comando pip lo instalamos:
pip install python-dotenv
En el archivo .flaskenv debemos escribir el siguiente código
FLASK_ENV=development FLASK_DEBUG=1 FLASK_APP=blog.py
Verás, te explico:
Para poner en marcha la app ejecutamos flask run:
flask run
Aqui podemos ver lo que aparece en el cmd cuando ejecutamos el proyecto:
(env) λ flask run * Serving Flask app "blog.py" (lazy loading) * Environment: development * Debug mode: on * Restarting with stat * Debugger is active! * Debugger PIN: 115-955-097 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Ahora ya podemos ver el resultado de nuestra aplicación si escribimos en el navegador la dirección http://localhost:5000/