Este tutorial introductorio de Python Flask explica qué es Flask, instalación de Python, Virtualenv, ejemplo de Flask Hello World con una sección de ejemplos de código, depuración y pruebas:
El desarrollo de sitios web es más un arte que una habilidad. Requiere paciencia y diligencia, además de perseverancia, valor y dedicación para crear lo necesario para que sea un verdadero éxito. Hoy en día, es esencial que los alumnos se pongan al día lo antes posible.
Hemos creado este tutorial de Python Flask para que los estudiantes se pongan al día e implementen programación web tanto simple como compleja utilizando Python 3.
Este tutorial de Python Flask es más como un tutorial para principiantes de Flask, que cubrirá la instalación de Python, Virtualenv, y otros paquetes esenciales. En esta serie de tutoriales, también instalaremos Flask junto con los otros plugins necesarios de Flask. También hemos incluido una sección sobre depuración de código, pruebas e integración continua utilizando Git Actions.
Lista de tutoriales de esta serie de Flask
Tutorial nº 1: Tutorial de Python Flask - Introducción a Flask para principiantes
Tutorial nº 2: Plantilla, formulario, vista y redirección de Flask con ejemplos
Tutorial nº 3: Flask Database Handling - Cómo usar Flask con una base de datos
Tutorial nº 4: Flask App Y Flask Proyecto Diseño Con Blueprint & Bootstrap
Tutorial nº 5: Patrones de diseño y mejores prácticas de Flask para aplicaciones web
Tutorial nº 6: Flask API Tutorial Con Ejemplo
Tutorial nº 7: Django Vs Flask Vs Node: Qué Framework Elegir
Tutorial nº 8: Top 31 Preguntas populares de la entrevista de Python Flask con respuestas
Qué es Flask
Flask es un framework de desarrollo web. Es un framework con un servidor de desarrollo integrado y un depurador.
El framework Flask en sí mismo es diferente de los demás arquetipos, ya que permite a los desarrolladores web ser flexibles y adaptarse cómodamente a los cambios que se producen con frecuencia en la comunidad de desarrollo de software.
Para qué se utiliza el frasco
Utilizamos el framework Flask para desarrollar aplicaciones web en el lenguaje de programación Python. Se integra con otros servicios y API de terceros para aportar riqueza y sentido a la aplicación en desarrollo. Los conceptos básicos de Flask son sencillos y ocupa muy poco espacio.
Comencemos con este tutorial de Python Flask para entender el desarrollo web con la ayuda de un repositorio de Flask en GitHub. Sin embargo, antes de continuar, por favor clona el proyecto desde Github para un fácil seguimiento de los ejemplos de código discutidos.
Requisitos previos
Aparte de lo mencionado en esta sección, recomendamos crear una cuenta de Github. Procedamos con los pasos mencionados a continuación en los requisitos previos.
Paso 1: Instalar Python
Comprueba si tienes instalado Python 3. Si no es así, descarga Python 3 desde aquí e instálalo según tu sistema operativo.
Paso 2: Crear un entorno virtual Python
Cree un entorno virtual utilizando el siguiente comando.
python3 -m venv venv
Utilice el siguiente comando para activar el entorno virtual Python.
fuente venv/bin/activate
A continuación se ofrece un ejemplo de activación y desactivación del entorno virtual.
Todos los comandos posteriores de este tutorial deben ejecutarse en un entorno virtual activado. Instala el paquete wheel para que podamos construir wheels dentro del entorno virtual.
pip install rueda
Paso 3: Descarga e instalación de Flask
Tenemos que realizar los pasos de descarga de Flask e instalar Flask siguiendo los pasos que se indican a continuación.
Ahora instala Flask.
pip install flask
Algunos de nosotros nos gusta trabajar junto con los últimos cambios en el código fuente. Podemos utilizar el siguiente comando para instalar con los últimos cambios en las fuentes de Flask.
Crea un directorio temporal.
mkdir tmp
Ahora instala Flask desde el repositorio de Github. Necesitas permanecer conectado a internet para que el siguiente comando funcione.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Mira las salidas de la consola para comprobar que la instalación se ha realizado correctamente. Ahora comprueba si podemos acceder a los comandos de Flask.
matraz --help
Puede que veas algunas excepciones sobre la ausencia de una aplicación Flask. Sin embargo, no las tengas en cuenta, ya que no hemos creado ninguna aplicación Flask. Nuestra aplicación es una instancia de Flask, que es una envoltura del framework web Werkzeug y el motor de plantillas Jinja.
Werkzeug
Werkzeug es un conjunto de herramientas WSGI. WSGI no es más que una convención de llamada para que los servidores web reenvíen solicitudes web a aplicaciones web escritas en lenguaje de programación Python.
Jinja
La creación de plantillas es una habilidad esencial para los desarrolladores web. Jinja es un motor de creación de plantillas para Python muy popular y con muchas funciones. Es un lenguaje bastante expresivo y proporciona un sólido conjunto de herramientas a los autores de plantillas.
Paso 4: Instalar MongoDB
Siga los pasos que se indican a continuación para instalar MongoDB. Hemos descrito los pasos para instalarlo en un Linux basado en Debian. Si utiliza otro sistema operativo, acceda al enlace e instale según el sistema operativo previsto.
Instalar gnupg para importar la clave GPG pública de MongoDB.
sudo apt-get install gnupg
Ahora importe la clave utilizando el comando siguiente.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Cree el archivo de lista de fuentes según su distribución de Linux. Hemos añadido la lista de fuentes según Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Ejecutar comando de actualización
sudo apt-get update
Ahora instala MongoDB, usando el siguiente comando.
sudo apt-get install -y mongodb-org
Una vez que la instalación se haya realizado correctamente, inicie MongoDB utilizando el siguiente comando.
sudo systemctl start mongod
Comprueba el estado de MongoDB, usando el comando de abajo.
sudo systemctl status mongod
Ahora asegúrese de que mongod se inicia automáticamente al reiniciar el sistema mediante el comando que se muestra a continuación.
sudo systemctl enable mongod
Ahora comprueba si puedes conectarte al servidor MongoDB usando el cliente mongo.
mongo
En el shell de mongo, prueba a utilizar los comandos help y show dbs.
Crear una aplicación Flask
Utilice el siguiente comando para instalar flask-appbuilder y mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Cree una aplicación esqueleto con los valores que se muestran como comentarios en el siguiente fragmento de código.
flask fab create-app # Dar los siguientes valores en el cuestionario de la línea de comandos # Nombre de la aplicación: flaskTutorialApp # EngineType : MongoEngine
Veremos una salida similar a la que se muestra a continuación.
Tu nuevo nombre de aplicación: exampleApp Tu tipo de motor, SQLAlchemy o MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Descargado el esqueleto de la aplicación, ¡buena codificación!
Echa un vistazo al diseño del proyecto y de la aplicación. A continuación mostramos la salida del comando tree.
Echemos un vistazo al archivo de configuración de Flask. Es una configuración por defecto generada como resultado del último comando. Descomentar Cyborg como se muestra a continuación.
# Configuración de temas para Cybord=g # estos temas se encuentran en static/appbuilder/css/themes # Podemos crear los nuestros propios y usarlos fácilmente colocándolos en la misma estructura dir para sobreescribir #APP_THEME = "bootstrap-theme.css" # bootstrap por defecto #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # tema amelia #APP_THEME = "cosmo.css" # tema cosmo APP_THEME = "cyborg.css" # cyborgtema #APP_THEME = "flatly.css" # tema flatly
Para ejecutar la aplicación esqueleto, utilice el siguiente comando en el terminal.
ejecución en matraz
Flask Hola Mundo
Para crear su primer programa en la flaskTutorialApp, abra el archivo views.py bajo el directorio app y añada el siguiente código. Busque las sentencias import dadas en el archivo. Añada estas sentencias si no están ya presentes.
from flask_appbuilder import BaseView, expose from app import appbuilder class HolaMundo(BaseView): """ Esta primera vista del tutorial """ route_base = "/hola" @expose("/") def hola(self): return "¡Hola, Mundo! de Software Testing Help" # al final del archivo appbuilder.add_view_no_menu(HolaMundo())
Guarde el archivo después de añadir el código fuente anterior. Vaya al directorio raíz del proyecto y utilice el siguiente comando para ejecutar el servidor de desarrollo de Flask.
ejecución en matraz
Ahora navega a //localhost:5000/hello/ para ver la salida en el navegador.
Depuración
Actualmente, el servidor de desarrollo no se ejecuta en el modo de depuración. Sin el modo de depuración, es difícil encontrar los errores en el código fuente de la aplicación Flask.
El modo Debug en Flask da como resultado lo siguiente:
- El modo de depuración activa el Recargador automático. Esto significa que no necesitamos reiniciar el servidor de desarrollo después de realizar cambios en el código fuente de la aplicación.
- El modo Debug activa el depurador de Python. Podemos inspeccionar los valores de las variables durante la Excepción.
- El modo Debug habilita la depuración de la aplicación Flask. Podemos comprobar los valores de diversas variables en las sesiones de depuración.
Detenga el servidor de desarrollo si ya se está ejecutando. Puede utilizar CTRL + C o la interrupción del teclado para hacer lo mismo.
Utilice el siguiente código para activar el modo de depuración y ejecutar el servidor de desarrollo temporalmente.
FLASK_ENV=ejecución del matraz de desarrollo
Busca en la consola el PIN del depurador y anótalo.
Ahora vamos a cambiar la vista HelloWorld escrita anteriormente con las siguientes líneas del fragmento de código. Observa que hemos introducido una excepción personalizada.
@expose("/") def hola(self): raise Exception("Una excepción personalizada para aprender el modo DEBUG") return "¡Hola, mundo! de Software Testing Help"
Navega a //localhost:5000/hello/, y verás que la aplicación ha lanzado una excepción. El navegador muestra el stack trace, como se muestra a continuación.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Además, fíjate en la consola donde se ejecuta el servidor de desarrollo. Verás que esta vez, los cambios en el views.py se detectan automáticamente, y el servidor de depuración se reinicia solo. Ahora no necesitamos reiniciarlo manualmente.
La consola tendrá líneas, como se muestra a continuación. Tenemos que anotar el PIN de depuración para más tarde.
* Detectado cambio en '/work/sth/flaskTutorialApp/app/views.py', recargando 2020-06-02 14:59:49,354:INFO:werkzeug: * Detectado cambio en '/work/sth/flaskTutorialApp/app/views.py', recargando * Reiniciando con stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Reiniciando con stat * ¡El depurador está activo! * PIN del depurador: 150-849-897
Ahora comprueba el stack trace en el navegador y ve a la última línea. Haz clic en ella para expandir su vista y haz clic en el icono CLI para abrir el shell en modo interactivo.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Una vez que lo abra, verá que el navegador le pedirá el PIN de depuración. Introduzca el PIN de depuración y haga clic en Aceptar.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Una vez que avanzamos después de dar el PIN de depuración, podemos acceder a la shell interactiva.
Accedemos al shell desde el navegador y podemos inspeccionar los valores de las variables para encontrar la causa de la Excepción y manejar el error de una mejor manera. Por favor, mire uno de los ejemplos mostrados en la imagen de abajo.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Ahora cambie el código en view.py, como se muestra a continuación. Tenga en cuenta que hemos comentado en la línea que tenía la excepción planteada.
@expose("/") def hola(self): # raise Exception("Una excepción personalizada para aprender el modo DEBUG") return "¡Hola, mundo! de Software Testing Help"
Prueba de la aplicación Flask
Ahora vamos a escribir nuestro primer test para la aplicación Flask que estamos desarrollando. Primero, instala PyTest. PyTest es un framework de testing que nos ayuda a escribir mejor código.
Además, sólo por el hecho de que podemos escribir pruebas unitarias mientras desarrollamos nuestras aplicaciones, es posible seguir el enfoque TDD. TDD son las siglas de Test-Driven Development (desarrollo dirigido por pruebas). En nuestros siguientes tutoriales de esta serie, siempre escribiremos primero las pruebas y luego desarrollaremos nuestras vistas o modelos.
Instalar PyTest
pip install pytest
Ahora crea un directorio llamado tests dentro del directorio de la app y en ese crea un archivo llamado test_hello.py. Escribamos nuestro primer test unitario para probar nuestra vista.
Copie el siguiente fragmento de código y péguelo en test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ Un fixture pytest para probar el cliente """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ Un método de prueba para probar la vista hola """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Utilice el siguiente comando pytest para ejecutar las pruebas. PyTest recoge automáticamente las Pruebas y muestra los resultados en la salida estándar.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Crear un flujo de trabajo de GitHub
Utilizamos Git Actions para crear un flujo de trabajo CI/CD para nuestra aplicación de ejemplo. Siga los pasos que se indican a continuación para su proyecto.
Paso 1: Accede a la página del repositorio en GitHub. Haz clic en Acciones Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Paso 2: Desplácese hacia abajo en la página y busque una plantilla de flujo de trabajo existente para un paquete Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Paso 3: Configurar el paquete Python Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Paso 4: Una vez abierta la configuración del flujo de trabajo python-package.yml, actualícela basándose en los valores de etiquetas adicionales yaml dados.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
Queremos probar nuestra aplicación Flask en la última distribución de Linux Ubuntu. Además del sistema operativo, queremos ejecutar nuestras pruebas sólo con Python 3.7 y Python 3.8.
Paso 5: Confirme el archivo python-package.yml con los valores actualizados.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Paso 6: El commit de la página anterior nos lleva a las tareas de GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Paso 7: [Opcional]
En la página Github Jobs de la aplicación tutorial de ejemplo, podemos crear una insignia y colocarla en el archivo README.md para mostrar el estado de compilación.
Ahora, cada vez que los cambios son confirmados en la rama maestra, Git Workflow, como está escrito en python-package.yml será seguido y ejecutado en Git Actions.
Conclusión
En este tutorial, hemos cubierto todos los conceptos básicos de los requisitos previos a la creación de CI / CD flujo de trabajo para una aplicación web desarrollada utilizando Flask - Un marco de desarrollo web basado en Python.
Este tutorial cubre todos los pasos necesarios como instalar Python, descargar & instalar Flask, trabajar con Flask-Appbuilder, realizar pruebas con PyTest, etc. para iniciarse en el desarrollo web usando Python. La comunidad de desarrollo web suele comparar Flask con otro popular framework de desarrollo web en Python llamado Django.
Explicaremos estas diferencias y también compararemos estos frameworks en uno de los tutoriales de esta serie.