Un web framework est une bibliothèque de code qui rend le développement web plus rapide et plus facile en fournissant des modèles communs pour construire des applications web fiables, évolutives et maintenables. Après le début des années 2000, les projets de développement web professionnels utilisent toujours un framework web existant, sauf dans des situations très inhabituelles.
Pourquoi les frameworks web sont-ils utiles ?
Les frameworks web encapsulent ce que les développeurs ont appris au cours des vingt dernières années en programmant des sites et des applications pour le web. Les frameworks facilitent la réutilisation du code pour les opérations HTTP courantes et la structuration des projets afin que d’autres développeurs connaissant le framework puissent rapidement construire et maintenir l’application.
Fonctionnalités communes des frameworks web
Les frameworks fournissent des fonctionnalités dans leur code ou par le biais d’extensions pour effectuer les opérations communes nécessaires à l’exécution des applications web. Ces opérations communes comprennent :
- Routage des URL
- Manipulation et validation des formulaires d’entrée
- HMAGE, XML, JSON et autres formats de sortie avec un moteur de templating
- Configuration de la connexion à la base de données et manipulation des données persistantes par le biais d’un mappeur objet-relationnel (ORM)
- Sécurité Web contre la falsification des requêtes intersites (CSRF), SQL Injection,Cross-site Scripting (XSS) et autres attaques malveillantes courantes
- Session storage and retrieval
Tous les frameworks web n’incluent pas le code pour toutes les fonctionnalités ci-dessus.Les frameworks se situent sur un spectre allant de l’exécution d’un seul cas d’utilisation à la fourniture de toutes les fonctionnalités connues des frameworks web à chaque développeur. Certains frameworks adoptent l’approche « batteries incluses » où tout ce qui est possible est fourni avec le framework, tandis que d’autres ont un package de base minimal qui se prête aux extensions fournies par d’autres packages.
Par exemple, le framework d’application web Django inclut la couche ORM Django qui permet à un développeur de rédiger des opérations de lecture, d’écriture, d’interrogation et de suppression de bases de données relationnelles en code Python plutôt qu’en SQL.Cependant, l’ORM de Django ne peut pas fonctionner sans modification significative sur des bases de données non relationnelles (NoSQL) telles queMongoDB ou Cassandra.
Certains autres frameworks web tels que Flask etPyramid sont plus faciles à utiliser avec des bases de données non relationnelles en intégrant des bibliothèques Python externes.Il existe un spectre entre une fonctionnalité minimale avec une extensibilité facile d’un côté et l’inclusion de tout dans le framework avec une intégration étroite de l’autre côté.
Dois-je utiliser un framework web ?
L’utilisation ou non d’un framework web dans votre projet dépend de votrerexpérience en matière de développement web et de ce que vous essayez d’accomplir. Si vous êtes un programmeur débutant et que vous souhaitez simplement travailler sur une application web en tant que projet d’apprentissage, alors un framework peut vous aider à comprendre les concepts énumérés ci-dessus, tels que le routage d’URL, la manipulation de données et l’authentification qui sont communs à la majorité des applications web.
D’autre part, si vous êtes un programmeur expérimenté avec une expérience significative du développement web, vous pouvez avoir l’impression que les frameworks existants ne correspondent pas aux exigences de votre projet. Dans ce cas, vous pouvez mélanger des bibliothèques open source telles que Werkzeug pour la plomberieWSGI avec votre propre code pour créer votre propre framework. Il y a encore beaucoup de place dans l’écosystème Python pour de nouveaux frameworks afin de satisfaire les besoins des développeurs web qui ne sont pas satisfaits par Django,Flask, Pyramid, Bottle et beaucoup d’autres.
En bref, la nécessité ou non d’utiliser un framework web pour construire une application web dépend de votre expérience et de ce que vous essayez d’accomplir.L’utilisation d’un framework web pour construire une application web n’est certainement pas nécessaire, mais elle facilitera la vie de la plupart des développeurs dans de nombreux cas.
Comparaison des frameworks web
Talk Python to Me avait un épisode de podcastavec une comparaison détaillée des frameworks Django,Flask, Tornado et Pyramid.
Vous êtes curieux de savoir comment le code d’un projet Django est structuré par rapport à Flask ? Consultez ce tutoriel sur les applications web Django, puis visualisez la même application construite avec Flask.
Il existe également un référentiel appelécompare-python-web-frameworksoù la même application web est codée avec différents webframeworks Python, moteurs de templating et mappeurs objet-relationnel.
Ressources sur les frameworks web
-
Building Your Own Python Web Frameworkest un moyen génial d’apprendre comment fonctionne le WSGIet les nombreuses autres pièces qui se combinent pour rendre les frameworks web utiles aux développeurs web.
-
12 requêtes par secondexamine comment le framework web traditionnellement synchroneFlask se compare à un framework asynchrone commeSanic dans un benchmark artificiel et simple. Les résultats donnent l’impression que Sanic est beaucoup plus rapide que Flask, mais dès que l’on ajoute une quantité de fonctionnalités de base à un projet, notamment des requêtes de base de données et des modèles, les résultats s’équilibrent. Miguel Grinber a également une grande lecture avec des résultats plus larges dans cetarticle demandant aux lecteurs dIgnorer tous les benchmarks de performance Web, y compris celui-ci.
-
Lorsque vous apprenez à utiliser un ou plusieurs frameworks Web, il est utile d’avoir une idée de ce que fait le code sous les couvertures. Ce post sur la construction d’un framework Python simple à partir de zéro montre comment les connexions HTTP, le routage et les demandes peuvent fonctionner en seulement 320 lignes de code. Ce post est génial même si le framework résultant est une simplification de ce que des frameworks tels que Django,Flask et Pyramid permettent aux développeurs d’accomplir.
-
Il existe également un autre tutoriel plus récent en plusieurs parties sur la construction de votre propre framework web en Python. Cette série est basée sur le projetalcazar que l’auteur est en train de coder à des fins d’apprentissage :
- Partie 1 : Manipuler les requêtes
- Partie 2 : Routes, gestionnaires basés sur des classes et tests unitaires
- Partie 3 : Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the »What is a web framework and how does it compare to LAMP? »question on Stack Overflow.
-
Another great series that digs behind the web framework magic is »Web Application from Scratch ». The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Choosing a Python Web Frameworkcontainers background information and code comparisons for similarweb applications built in these three big Python frameworks.
-
Ce fascinant billet de blog jette un coup d’œil à la complexité du code de plusieurs frameworks web Python en fournissant des visualisations basées sur leurs bases de code.
-
Les benchmarks des frameworks web Python est un test de la réactivité d’un framework avec l’encodage d’un objet en JSON et son retour en tant que réponse ainsi que la récupération de données de la base de données et leur rendu dans un modèle. Il n’y a pas eu de résultats concluantsmais la sortie est néanmoins amusante à lire.
-
Quels frameworks web utilisez-vous et pourquoi sont-ils géniaux?est une discussion Reddit agnostique au niveau du langage sur les frameworks web. Il est intéressant de voir ce que les programmeurs d’autres langages aiment et n’aiment pas dans leur suite de frameworks web par rapport aux principaux frameworks Python.
-
Cette question votée par les utilisateurs & site de réponse demandait « Quels sont les meilleurs frameworks web Python à usage général utilisables en production ? ».Les votes ne sont pas aussi importants que la liste des nombreux frameworks qui sont disponibles pour les développeurs Python.
-
Django vs. Flask en 2019 : quel framework choisir examine les meilleurs cas d’utilisation de Django et Flask ainsi que ce qui les rend uniques, d’un point de vue éducatif et de développement.
-
11 nouveaux frameworks web Pythona un bref aperçu de plusieurs nouveaux frameworks encore émergents,tels que Sanic, Masoniteet Molten.
Liste de contrôle de l’apprentissage des frameworks web
-
Choisissez un framework web Python majeur (Django ouFlask sont recommandés) et tenez-vous-en à celui-ci. Lorsque vous débutez, il est préférable d’apprendre un seul framework en premier lieu au lieu de rebondir en essayant de comprendre tous les frameworks.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.