Back to Top

Les frameworks Python web

Python pour le web: ses principaux frameworks

Certains pensent encore que le web, c’est du PHP, partout. Nous avions d’ailleurs déjà parlé de l’avenir de ce langage. Les gens les plus dans le vent prêcheront plutôt pour NodeJS. A croire qu’on fait pas déjà assez de Javascript comme ça, ce langage troll qui me fait frissonner! Oui il y a un peu de mauvaise foi, et alors? Cependant, le Python n’est clairement pas en reste sur ce secteur, avec de nombreux frameworks, ayant chacun leurs forces et faiblesses. On va voir qu’entre Django et Bottle dont j’ai déjà un petit peu parlé (voir l’article parlant de Bottle) se trouvent d’autres solutions. Adaptées tantôt aux gros projets, tantôt à du code plus jetable. Je vais aussi parler de Flask comme solution intermédiaire, et je finirai sur une note concernant la palanquée de microframeworks qui existent.

Logo Django

Django, le patron

Peut-être voudriez-vous développer un site pour un grand groupe, une petite solution pour une association ou apprendre un peu le web en Python et faire un mini-site pour vous entraîner? Sauf que ni le PHP, ni le JS ne vous font de l’œil?

Bien heureusement, Python pourra vous dépanner. Cependant, en fonction de vos besoins, les solutions adaptées seront évidemment très différentes. Django est le plus connu des frameworks Python web, c’est le mastodonte du domaine. Gestion des Bases de Données, panneau d’administration auto-généré, ORM clé en main, système d’héritage de templates, système de migration automatique, tout est là. Et je n’ai pas parlé des centaines d’applications pour tout et n’importe quoi déjà existantes. En plus des avantages techniques, il est le framework web Python le plus utilisé. D’ailleurs, voici quelques célèbres entreprises qui sont passés par Django à un moment ou un autre pour réaliser leur solution: Instagram, Pinterest, Youtube, Spotify, Dropbox, … La liste est longue! Vous vous douterez donc que Django est logiquement très documenté et possède une communauté active.

J’espère que cette petite parenthèse vous aura donné l’eau à la bouche! Comme on dit, y’a plus qu’à. Ainsi, pour les gros projets, c’est un choix logique, tout est cadré, en plus le découpage logique de l’application suit la logique web MVC (voici un petit lien Wikipédia pour ceux ne connaissant pas). On garde donc la flexibilité des constructions webs modernes. Pour les puristes, la nomenclature Django est en faite Model View Template, soit MVT, la View et Template Django étant respectivement un équivalent de Control et View MVC. Il y a même une surcouche dédiée à la construction d’une API RESTful. Par contre, ce découpage peut parfois être un peu trop lourd pour des projets plus légers.

En effet, Django construit une structure d’application très claire et standard. Cela permet une architecture semblable pour tous les projets, accélère la productivité, mais pour celui qui veut juste une dizaine de pages qui communiquent entre elle et une base de données, ça fera peut-être beaucoup. Vous n’avez peut-être pas besoin de gérer autant de pages et données qu’Instagram ou Pinterest! C’est là qu’intervient Flask.

Logo Flask

Flask, le flexible

En effet, pour ce genre d’usage, Flask est peut-être plus adapté. Beaucoup plus léger que Django, il est aussi, vous vous en douterez, un peu moins complet. Pas d’ORM par exemple, mais ce choix permet a l’outil de mieux s’adapter aux tâches à faire. Ainsi le développeur ne se retrouve pas coincé dans un choix technique. Il pourra donc choisir un ORM, ou tout simplement faire du « pur » SQL, dans un soucis d’optimisation par exemple. Cette logique existe dans de nombreux aspects du framework et met en lumière la flexibilité de la technologie. Même si certains n’aimeront pas cette expression, c’est un peu le « Django lite » à mon sens. C’est une très bonne alternative pour des projets de taille raisonnable. Cependant, passé une certaine taille critique, bien qu’on puisse continuer a utiliser Flask, on risque de se retrouver à développer des fonctionnalités de Django (comme une belle logique de découplage MVC ou un aspect sécurité plus poussé). Or, la concurrence de DjangoRest fait que pour ce qui concerne le développement d’API, Flask part d’un peu plus loin.
Pour résumer: projet de taille raisonnable + volonté de flexibilité = Flask.

Logo Bottle

Bottle, le petit

On en a déjà parlé, Bottle c’est petit, très petit. Ça tient dans un seul fichier d’ailleurs. Bon on va pas se mentir, dans un fichier on va pas retrouver d’ORM par exemple. Mais par contre on à le templating et la gestion des routes. C’est déjà pas mal, je dirais même largement suffisant pour commencer. Mais on ne va pas se mentir, on ne pourra pas aller très loin niveau technique. Bottle suffira largement pour un maquettage sur très peu de pages, mais en dehors de l’aspect « c’est vraiment cool », l’intérêt est relativement limité. Par contre, on l’a vu dans notre article sur Python, faire un petit code en Bottle c’est vraiment très rapide et simple.

Je conseillerais donc Bottle plutôt comme introduction au web pour ceux ne maîtrisant pas le sujet, ou pour des projets simples et de petite taille. Ce peut-être sympa pour vous familiariser avec les idées de routes et de vues par exemple.

Pour conclure

Utiliser un framework Python pour faire du web, c’est utiliser un langage que l’on connait, avec de nombreux mécanismes complexes et puissants. Ensuite, la puissance d’un framework comme Django oblige en quelque sorte a structurer son projet. Si bien maitrisé, la productivité est toute autant présente qu’avec les équivalents PHP, donc si vous connaissez déjà Python et souhaitez vous lancer dans le web, ne perdez pas de temps et codez!
Enfin, pour les curieux qui souhaiteraient aller plus loin, je vous laisse avec une liste de quelques frameworks intéressants: Pyramid, CherryPy et Tornado devraient satisfaire votre curiosité.

Sur ce, et parce qu’on est sur Foutu Code, je vous laisse avec une liste de quelques memes Python qui devraient vous plaire:
Gérer l’indentation en Python
Apprendre à gérer les strings en Python

Par Clément Caffin


Random_content()

Rechercher:





Suis-nous sur les réseaux sociaux!

Instagram

S'abonner