Blog
Flask: Configura tu Sistema e Inicia tu Primera Aplicación
- Publicado por: Rafael Fernandez
- Categoría: Blog
¡Bienvenido!
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 desde este repositorio de github, descarga los archivos fuente desde aquí.
Nota:
Librerías a instalar en este capítulo
- virtualenv
- flask
¿Que es Flask?
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.
¿Como Instalar Flask en Tu Sistema?
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:
- venv no está instalado: venv no es compatible o no viene instalado de forma nativa en algunos sistemas como Ubuntu o Debian, por lo tanto, se puede instalar desde la terminal con el siguiente comando:
$ 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.
- Instalar virtualenv en caso de que no esté instalado: En el caso de que se esté trabajando con una versión de Python inferior a la 3.4 o simplemente si prefieres trabajar con virtualenv, se puede instalar desde la terminal con el comando:
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
1º aplicación en flask
“Hola, Mundo”
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:
2º aplicación en flask (Con esta estructura trabajaremos a lo largo del curso)
“Hola, Mundo”
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
Flask variables de entorno
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:
- FLASK_ENV=development Activa el modo desarrollo de nuestra aplicación para que esta detecte cambios en nuestras vistas, modelos y rutas de nuestra app sin necesidad de estar deteniendo y reiniciando el servidor.
- FLASK_DEBUG=1 Una vez en modo desarrollo, esta variable activa el modo debug de flask, que nos permite ver nuestros errores mientras estamos desarrollando
- FLASK_APP=blog.py Variable de entorno que nos permite usar flask run desde la consola de nuestro entorno virtual.
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/
Es importante aclarar que el archivo .flaskenv debe ser modificado al momento de subir la aplicación a un servidor, es decir; cuando nuestra aplicación se encuentre en modo de producción, pero eso lo haremos más adelante, especificamente al final del curso.
➡ Esperamos que hayas puesto en práctica varios de los conceptos estudiados. Continúa aprendiendo con nuestro Curso de Flask – Python:
hola man, una pregunta como puedo hacer para hacer un instalador completo para mi app en flask
osea, lo que quiero hacer es un archivo ejecutable, un script .bat para windows que instale los paquetes
necesarios de flask y demas, y tambien ejecute el servicio automaticamente (python app.py)
Tambien que cree la base de datos en mysql de forma local, o…
Tambien estaría mejor aún que lo haga para trabajar directo con un sevidor en la nube
Se puede?
Muchas Gracias!