Ce tutoriel d'introduction à Python Flask explique ce qu'est Flask, l'installation de Python, Virtualenv, l'exemple Flask Hello World avec une section sur les exemples de code, le débogage et les tests :
Le développement d'un site web est plus un art qu'une compétence. Il requiert de la patience et de l'assiduité, ainsi que de la persévérance, du courage et du dévouement pour créer ce qui est nécessaire à son succès. De nos jours, il est essentiel pour les apprenants de se mettre au diapason le plus tôt possible.
Nous avons créé ce tutoriel Python Flask pour que les étudiants puissent se familiariser avec la programmation web simple et complexe en utilisant Python 3.
Ce tutoriel Python Flask est plutôt un tutoriel pour débutants Flask, qui couvrira l'installation de Python, Virtualenv, et d'autres paquets essentiels. Dans cette série de tutoriels, nous installerons également Flask avec les autres plugins Flask nécessaires. Nous avons également inclus une section sur le débogage du code, les tests, et l'intégration continue en utilisant Git Actions.
Liste des tutoriels de la série Flask
Tutoriel n° 1 : Tutoriel Python Flask - Introduction à Flask pour les débutants
Tutoriel n°2 : Modèle, formulaire, vue et redirection Flask avec exemples
Tutoriel n°3 : Flask Database Handling - Comment utiliser Flask avec une base de données
Tutoriel n°4 : Flask App et Flask Project Layout avec Blueprint & ; Bootstrap
Tutoriel n°5 : Flask Design Patterns and Best Practices For Web Applications (en anglais)
Tutoriel n°6 : Tutoriel de l'API Flask avec exemple
Tutoriel n°7 : Django Vs Flask Vs Node : Quel framework choisir ?
Tutoriel n°8 : Top 31 Popular Python Flask Interview Questions With Answers (Questions d'entretien populaires sur Python Flask avec réponses)
Qu'est-ce que Flask ?
Flask est un cadre de développement web. Il s'agit d'un cadre de travail doté d'un serveur de développement intégré et d'un débogueur.
Le framework Flask est en soi différent des autres archétypes car il permet aux développeurs web d'être flexibles et de s'adapter confortablement aux changements fréquents dans la communauté des développeurs de logiciels.
À quoi sert le flacon ?
Nous utilisons le framework Flask pour développer des applications Web en langage de programmation Python. Il s'intègre avec d'autres services et API tiers pour apporter richesse et sens à l'application en cours de développement. Les concepts de base de Flask sont simples et son empreinte est minime.
Commençons par ce tutoriel Python Flask pour comprendre le développement web à l'aide d'un dépôt Flask GitHub. Cependant, avant de continuer, veuillez cloner le projet depuis Github pour faciliter le suivi des exemples de code discutés.
Conditions préalables
Outre les rubriques mentionnées dans cette section, nous recommandons la création d'un compte Github. Passons aux étapes mentionnées ci-dessous dans les prérequis.
Étape 1 : Installer Python
Vérifiez si vous avez installé Python 3 ou non. Si ce n'est pas le cas, téléchargez Python 3 à partir d'ici et installez-le en fonction de votre système d'exploitation.
Étape 2 : Créer un environnement virtuel Python
Créez un environnement virtuel à l'aide de la commande ci-dessous.
python3 -m venv venv
Utilisez la commande suivante pour activer l'environnement virtuel Python.
source venv/bin/activate
Nous donnons ci-dessous un exemple d'activation et de désactivation de l'environnement virtuel.
Toutes les commandes suivantes de ce tutoriel doivent être exécutées dans un environnement virtuel activé. Installez le paquet wheel afin de pouvoir construire des roues dans l'environnement virtuel.
pip install wheel
Étape 3 : Téléchargement et installation de Flask
Nous devons effectuer les étapes de téléchargement de Flask et installer Flask à l'aide des étapes mentionnées ci-dessous.
Installez maintenant Flask.
pip install flask
Certains d'entre nous aiment travailler avec les dernières modifications du code source. Nous pouvons utiliser la commande ci-dessous pour installer les dernières modifications des sources de Flask.
Créez un répertoire temporaire.
mkdir tmp
Installez maintenant Flask à partir du dépôt Github. Vous devez rester connecté à Internet pour que la commande ci-dessous fonctionne.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Regardez les sorties de la console pour vérifier que l'installation a réussi. Vérifiez maintenant si nous pouvons accéder aux commandes de Flask.
flask --help
Vous verrez peut-être quelques exceptions concernant l'absence d'une application Flask. Cependant, négligez-les car nous n'avons pas créé d'application Flask. Notre application est une instance de Flask, qui est un wrapper sur le framework web Werkzeug et le moteur de templating Jinja.
Werkzeug
Werkzeug est une boîte à outils WSGI. WSGI n'est qu'une convention d'appel permettant aux serveurs web de transmettre des données à des tiers. demandes web aux applications web écrites en langage de programmation Python.
Jinja
Le templating est une compétence essentielle des développeurs web. Jinja est un moteur de templating populaire et complet pour Python. C'est un langage très expressif qui fournit un ensemble d'outils robustes aux auteurs de templates.
Étape 4 : Installer MongoDB
Suivez les étapes ci-dessous pour installer MongoDB. Nous avons décrit les étapes pour l'installer sur un Linux basé sur Debian. Si vous utilisez un autre système d'exploitation, accédez au lien et procédez à l'installation en fonction du système d'exploitation utilisé.
Installer gnupg pour importer la clé publique GPG de MongoDB.
sudo apt-get install gnupg
Importez maintenant la clé à l'aide de la commande ci-dessous.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Créez le fichier de liste des sources en fonction de votre distribution Linux. Nous avons ajouté la liste des sources en fonction de Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Exécuter la commande de mise à jour
sudo apt-get update
Installez maintenant MongoDB à l'aide de la commande ci-dessous.
sudo apt-get install -y mongodb-org
Une fois l'installation réussie, démarrez MongoDB à l'aide de la commande ci-dessous.
sudo systemctl start mongod
Vérifiez l'état de MongoDB à l'aide de la commande ci-dessous.
sudo systemctl status mongod
Assurez-vous maintenant que mongod démarre automatiquement au redémarrage du système en exécutant la commande ci-dessous.
sudo systemctl enable mongod
Vérifiez maintenant si vous pouvez vous connecter au serveur MongoDB en utilisant le client Mongo.
mongo
Dans le shell Mongo, essayez d'utiliser les commandes help et show dbs.
Créer une application Flask
Utilisez la commande ci-dessous pour installer flask-appbuilder et mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Créez un squelette d'application avec les valeurs indiquées comme commentaires dans l'extrait de code ci-dessous.
flask fab create-app # Donnez les valeurs suivantes dans le questionnaire de la ligne de commande # Nom de l'application : flaskTutorialApp # Type de moteur : MongoEngine
Nous obtiendrons un résultat similaire à celui présenté ci-dessous.
Votre nouveau nom d'application : exampleApp Votre type de moteur, SQLAlchemy ou MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy] : MongoEngine Téléchargé le squelette de l'application, bon codage !
Regardez la disposition du projet et de l'application. Nous avons montré la sortie de la commande tree ci-dessous.
Jetons un coup d'œil au fichier de configuration de Flask. Il s'agit d'une configuration par défaut générée à la suite de la dernière commande. Décommenter Cyborg comme indiqué ci-dessous.
# Configuration du thème pour Cybord=g # ces thèmes sont situés sur static/appbuilder/css/themes # nous pouvons créer les nôtres et les utiliser facilement en les plaçant sur la même structure de répertoire pour les remplacer #APP_THEME = "bootstrap-theme.css" # bootstrap par défaut #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # thème amelia #APP_THEME = "cosmo.css" # thème cosmo APP_THEME = "cyborg.css" # cyborgthème #APP_THEME = "flatly.css" # thème flatly
Pour exécuter l'application squelette, utilisez la commande ci-dessous dans le terminal.
exécution de la flasque
Flask Hello World
Pour créer votre premier programme dans l'application flaskTutorialApp, ouvrez le fichier views.py dans le répertoire app et ajoutez le code suivant. Recherchez les déclarations d'importation données dans le fichier. Ajoutez ces déclarations si elles ne sont pas déjà présentes.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView) : """ Cette première vue du tutoriel """ route_base = "/hello" @expose("/") def hello(self) : return "Hello, World ! from Software Testing Help" # à la fin du fichier appbuilder.add_view_no_menu(HelloWorld())
Enregistrez le fichier après avoir ajouté le code source ci-dessus. Allez dans le répertoire racine du projet et utilisez la commande ci-dessous pour lancer le serveur de développement de Flask.
exécution de la flasque
Naviguez maintenant vers //localhost:5000/hello/ pour voir le résultat dans le navigateur.
Débogage
Actuellement, le serveur de développement ne fonctionne pas en mode Debug. Sans ce mode, il est difficile de trouver les erreurs dans le code source de l'application Flask.
Le mode Debug dans Flask donne les résultats suivants :
- Le mode débogage active le rechargement automatique, ce qui signifie qu'il n'est pas nécessaire de redémarrer le serveur de développement après avoir apporté des modifications au code source de l'application.
- Le mode Debug active le débogueur Python, ce qui permet d'inspecter les valeurs des variables pendant l'Exception.
- Le mode Debug permet de déboguer l'application Flask et de vérifier les valeurs de diverses variables dans les sessions de débogage.
Arrêtez le serveur de développement s'il est déjà en cours d'exécution. Vous pouvez utiliser les touches CTRL + C ou l'interruption du clavier pour faire de même.
Utilisez le code suivant pour activer le mode de débogage et exécuter temporairement le serveur de développement.
FLASK_ENV=développement flask run
Recherchez dans la console le code PIN du débogueur et notez-le.
Modifions maintenant la vue HelloWorld écrite ci-dessus avec les lignes suivantes de l'extrait de code. Remarquez que nous avons introduit une exception personnalisée.
@expose("/") def hello(self) : raise Exception("Une exception personnalisée pour apprendre le mode DEBUG") return "Hello, World ! from Software Testing Help"
Naviguez vers //localhost:5000/hello/, et vous verrez que l'application a levé une exception. Le navigateur affiche la trace de la pile, comme indiqué ci-dessous.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
De plus, regardez la console où tourne le serveur de développement. Vous constaterez que cette fois-ci, les changements dans views.py sont automatiquement détectés, et le serveur de débogage redémarre de lui-même. Maintenant, nous n'avons plus besoin de le redémarrer manuellement.
La console comportera des lignes, comme indiqué ci-dessous. Nous devons noter le code PIN de débogage pour plus tard.
* Changement détecté dans '/work/sth/flaskTutorialApp/app/views.py', rechargement 2020-06-02 14:59:49,354:INFO:werkzeug : * Changement détecté dans '/work/sth/flaskTutorialApp/app/views.py', rechargement * Redémarrage avec stat 2020-06-02 14:59:49,592:INFO:werkzeug : * Redémarrage avec stat * Le débogueur est actif * Code PIN du débogueur : 150-849-897
Vérifiez maintenant la trace de la pile dans le navigateur et allez jusqu'à la dernière ligne. Cliquez dessus pour développer sa vue et cliquez sur l'icône CLI pour ouvrir l'interpréteur de commandes en mode interactif.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Une fois que vous l'aurez ouvert, vous verrez que le navigateur affichera une demande de code PIN de débogage. Donnez le code PIN de débogage et cliquez sur OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Après avoir donné le code PIN de débogage, nous pouvons accéder à l'interpréteur de commandes interactif.
Nous accédons à l'interpréteur de commandes à partir du navigateur et pouvons inspecter les valeurs des variables pour trouver la cause de l'exception et traiter l'erreur d'une meilleure manière. Veuillez examiner l'un des exemples présentés dans l'image ci-dessous.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Modifiez maintenant le code dans view.py, comme indiqué ci-dessous. Notez que nous avons commenté la ligne qui contenait l'exception soulevée.
@expose("/") def hello(self) : # raise Exception("Une exception personnalisée pour apprendre le mode DEBUG") return "Hello, World ! from Software Testing Help"
Test de l'application Flask
Maintenant, écrivons notre premier test pour l'application Flask que nous développons. Tout d'abord, installez PyTest. PyTest est un cadre de test qui nous aide à écrire un meilleur code.
De plus, comme nous pouvons écrire des tests unitaires tout en développant nos applications, il est possible de suivre l'approche TDD (Test-Driven Development). Dans les prochains tutoriels de cette série, nous commencerons toujours par écrire des tests avant de développer nos vues ou nos modèles.
Installer PyTest
pip install pytest
Créez maintenant un répertoire appelé tests dans le répertoire app et créez-y un fichier appelé test_hello.py. Écrivons notre premier test unitaire pour tester notre vue.
Copiez l'extrait de code suivant et collez-le dans test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client() : """ A pytest fixture for test client """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client : yield client def test_hello(client) : """ A test method to test view hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Utilisez la commande pytest ci-dessous pour exécuter les tests. PyTest collecte automatiquement les tests et affiche les résultats sur la sortie standard.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Créer un flux de travail GitHub
Nous utilisons les actions Git pour créer un flux de travail CI/CD pour notre exemple d'application. Suivez les étapes ci-dessous pour votre projet.
Étape 1 : Naviguez vers la page du dépôt sur GitHub. Cliquez sur Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Étape 2 : Faites défiler la page vers le bas et trouvez un modèle de flux de travail existant pour un paquetage Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Étape 3 : Installation du paquetage Python Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Étape 4 : Une fois la configuration du flux de travail python-package.yml ouverte, mettez-la à jour en fonction des valeurs de balises supplémentaires yaml données.
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
Nous voulons tester notre application Flask sur la dernière distribution Linux Ubuntu. En plus du système d'exploitation, nous voulons effectuer nos tests uniquement avec Python 3.7 et Python 3.8.
Etape 5 : Commencer le fichier python-package.yml avec les valeurs mises à jour.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Étape 6 : Le commit de la page précédente nous amène aux tâches de GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Étape 7 : [Facultatif].
Sur la page Github Jobs de l'application tutorielle, nous pouvons créer un badge et le placer sur le fichier README.md pour afficher l'état de la construction.
Désormais, chaque fois que des modifications sont apportées à la branche master, le flux de travail Git, tel qu'il est écrit dans le fichier python-package.yml, sera suivi et exécuté sur les actions Git.
Conclusion
Dans ce tutoriel, nous avons couvert tous les concepts de base, des conditions préalables à la mise en place d'un flux de travail CI/CD pour une application web développée à l'aide de Flask - un cadre de développement web basé sur Python.
Ce tutoriel couvre toutes les étapes nécessaires telles que l'installation de Python, le téléchargement & ; l'installation de Flask, le travail avec Flask-Appbuilder, les tests avec PyTest, etc. pour commencer le développement web en utilisant Python. La communauté du développement web compare généralement Flask avec un autre cadre de développement web Python populaire appelé Django.
Nous expliquerons ces différences et comparerons également ces frameworks dans l'un des tutoriels de cette série.