Accéder au contenu principal

Comment développer une extension Flask et rendre son projet web Python plus fun

Hello! Si vous utilisez le framework Flask pour vos projets web en Python, cet article pourrait très bien vous être utile. En effet, je vous explique comment développer une extension Flask.



Tout d'abord, c'est quoi une extension?

Tous les frameworks connaissent des extensions ou plugins. Il s'agit en effet de packages ou librairies qui viennent se greffer à votre application pour en ajouter des fonctionnalités qui n'y existent pas par défaut. L'un des exemples que je pourrais vous proposer est le cas des extensions Chrome. Nous les utilisons tous sur nos navigateurs. Chacun d'entre nous a peut-être déjà installé une extension qui permet de faire des captures d'écran à partir de son navigateur. Vous noterez aussi que les frameworks populaires comme  Laravel et Django possèdent aussi leurs magasins d'extensions. Vous pouvez utilisez GeoDjango pour ajouter un système de cartographie à votre application, Laravel Notify pour afficher des notifications dans votre application.

Du coup, Flask n'est pas en reste


Flask est un microframework c'est-à-dire qu'il vient avec le stricte minimum dont votre application web aura besoin. Il s'agit entre autres d'un système de routage et d'un système de gestion de template. Un tel framework ne vient pas par défaut avec un système d'authentification ou un système de gestion d'utilisateurs. 

Armin Ronacher lorsqu'il a développé ce framework en 2010 c'était fixé l'objectif de mettre sur pied un framework simple qui ne tiendrais que sur un seul fichier. Le développeur serais alors libre d'en faire ce qu'il veut et d'y ajouter ce qu'il veut, sans aucune contrainte à travers des extensions.

Aujourd'hui, Flask tout comme les autres frameworks a un large éventail d'extensions parmi lesquelles:
  1. Flask-SQLAlchemy pour connecter l'ORM SQLAlchemy et les BD SQL à votre application
  2. Flask-Login pour la gestion des authentifications
  3. Flask-Admin pour faciliter le développement des interfaces administrateurs
  4. Flask-Mail pour l'envoi des mails via SMTP
  5. Flask-WTF pour la gestion des formulaires et le chargement des fichiers
En utilisant les extensions, vous multipliez votre productivité par 10 et contrôler les éléments qui constituent votre application. Elle n'est pas belle la vie?

Vous pouvez vous aussi créer vos propres extensions et éviter de recréer la roue d'un projet à l'autre. Imaginez un peu: vous travaillez sur un projet e-commerce avec Flask. Vous développez une extension pour le paiement par mobile money, puis une autre pour la page produit, une autre pour le blog. Lorsque vous gagnez un second client, tout ce que vous aurez à faire sera de réutiliser ces extensions et d'y ajouter quelques fonctionnalités à cette dernière en fonction des besoins de ce client. Vous pourrez aussi faciliter leur maintenance dans le temps et gagnez hautement en terme de productivité. Vous aurez ainsi mis sur pied un système modulaire qui pourra s'adapter à différents types d'architectures.

Comment développer une extension Flask?

1. Comment se présente une extension Flask?


Je vous présente d'abord cette capture:

Cette capture est l'illustration parfaite de l’architecture d'une extension Flask. Elle est constituée de 2  fichiers principaux:
  1. setup.py: il s'agit du fichier de configuration qui est utilisé pour installer votre extension.
  2. __init__.py: le fichier d'initialisation de l'extension qui peut aussi contenir toute sa logique.
Les autres fichiers et dossiers sont justes là pour vous permettre de respecter quelques standards de développements, par exemple le modèle MVC.

2. Ce que vous devez absolument savoir lorsque vous mettez en place votre extension


  1. L'extension Flask est toujours mis dans un dossier appelé Flask-NomExtension ou NomExtension-Flask
  2. Ce dossier doit contenir votre extension proprement dite qui sera nommée flask_nom_extension
  3. Votre extension doit être publiée sous une licence permissive (BSD ou MIT)

3. Un peu de pratique: développons Flask-Simple ensemble!


Il s'agit d'une simple extension qui affiche une petite phrase, un truc assez simple pour vous permettre de comprendre ce que j'explique

D'abord notre setup.py 



Dans ce fichier on définit le nom de l'application, sa version, ses dépendances etc... 

Ensuite notre __init__.py

Il s'agit du contenu de notre extension proprement dite. On peut l'organiser de telle sorte qu'on puisse appeler des objets à partir des modèles (dossier models) et afficher les vues à partir du dossier views.


  1. Tout d'abord je commence par importer la classe Blueprint: from flask import Blueprint. La classe Blueprint de Flask est un objet qui permet d'avoir des applications modulaires. En effet, chaque Blueprint a ses propres modèles, ses propres vues et ses propres routes.
  2. Ensuite, je définis la classe Simple qui contiendra la logique de mon extension
  3. Dans la méthode __init__() j’instancie mon extension à travers la méthode init_app(). init_app() va permettre d'enregistrer mon Blueprint à travers la méthode register()
  4. Dans la méthode register(), j'initialise mon Blueprint et utilise la fonction add_url_rule() qui prend en paramètre la route et la fonction qui sera exécutée lorsque cette route est appelée.
On peut maintenant obtenir une extension Flask qui affiche Hello <name> lorsque j'accède à la route '/hello/<name>'. Par exemple, '/hello/nasser' affichera Hello nasser

Vous pouvez accéder au code entier de cette petite extension sur github à l'adresse https://github.com/abdounasser202/Flask-Simple 

Je vous propose également de lire la documentation officielle sur le développement des extensions ici: https://flask.palletsprojects.com/en/1.1.x/extensiondev/

Conclusion

Ça fait plusieurs années que je développe souvent avec Flask et lorsque j'ai découvert Odoo, j'ai été ébloui par sa modularité parce que sur Odoo, il y'a un module pour tout, on peut hériter et modifier tous ce qu'on veut. Alors je me suis dit: pourquoi ne pas utiliser la même logique sur Flask en exploitant la puissance des Bluerpints? C'est alors que j'ai commencé à me documenter dans le but de comprendre comment cela fonctionne et je vous assure que cet article de Bruno Rocha m'a été d'une grande aide. C'est alors que j'ai décidé de partager avec vous le peu que j'ai appris.

Si vous avez des remarques et suggestions, les commentaires sont ouverts!

Commentaires

  1. Bon comme article.
    Sur le plan technique c'est good.
    Il ya des coquilles d'orthographe là qui t'ont échappé.
    A part ça Good!!!

    RépondreSupprimer

Publier un commentaire

Posts les plus consultés de ce blog

Apprendre python: par où commencer?

Je reçois beaucoup de messages de la part de jeunes gens qui veulent débuter en programmation. Ils sont tous intéressés par le langage Python et voudraient savoir par où commencer . Si t'es l'un d'eux, je te dis dans cet article par où commencer, le minimum qu'il faut savoir et ce qui t'attends, le tout basé sur ma modeste expérience. Alors, qu'est ce qu'il faut savoir concrètement avant de commencer? Je ne vais pas te dire que Python a été créé par Guido en 1991, bla bla bla bla. Ces infos, tout le monde en parle et tu peux les retrouver toutes sur cette page Wikipedia . T'as certainement entendu quelqu'un te dire que Python est un langage hyper facile, mais je te dis que c'est faux! Certes il est très facile à prendre en main et formidable pour apprendre les bases de la programmation. Mais lorsqu'il s'agit d'implémenter de vrais projets, il faut tout un tas de connaissances précises par exemple sur les  collections , itertools , thr

Présentation d'un module Odoo de gestion de bibliothèque: comment développer un tel module?

Hello! Aujourd'hui nous allons continuer notre apprentissage d'Odoo en passant par la phase pratique. Nous allons ensemble développer un module de gestion de bibliothèque et donc le code source sera disponible sur un serveur Git. Le module que nous mettrons en place fera intervenir les modules de gestion de stocks, achats et ventes . Nous implémenterons entre autres des modèles et vues personnalisés, des rapports et des workflows . Bref, ce module vous donnera toutes les techniques et méthodes dont vous aurez besoin pour devenir un développeur Odoo chevronné.

Comment créer, sauvegarder, supprimer et restaurer une base de donnée Odoo

Hello! Aujourd'hui je vais vous montrer comment manipuler votre base de données Odoo. Il s'agira principalement de la création, sauvegarde, suppression et restauration à travers l'interface d'Odoo . Je ne manquerai également pas de vous briefer un tout petit peu sur PostgreSQL.