Mon amour pour Python ne date pas d'hier. Avant, j'avais travaillé avec PHP pendant environ 4 ans. Quand j'ai découvert la syntaxe de Python, sans accolades {} et sans $, ça m'a fait sourire. Je me suis dit : "Il n'y a plus rien, juste la logique qui compte". C'était simple, épuré, et cela correspondait parfaitement à ma manière de programmer, où j'ai toujours mis l'accent sur une bonne indentation. Avec Python, l'indentation est cruciale, et j'ai tout de suite adhéré à cette approche.
Mon parcours avec Django remonte à la version 1.3. À cette époque, les migrations n'étaient pas intégrées dans le framework. Il fallait utiliser un package externe, South, pour gérer les migrations. Malgré cette jeunesse, j'ai eu un véritable coup de cœur pour Django. C'était clair : tout avait été pensé pour faciliter le travail des développeurs, avec une console administrative directement incluse. À l'époque, ni Laravel ni Symfony n'avaient de solution "admin" intégrée. Il fallait donc coder tout un backend administratif pour les clients, ce qui augmentait considérablement la charge de travail. Pour moi, c'était une révélation, et aujourd'hui, 10 ans plus tard, mon enthousiasme pour Django n'a pas faibli.
Django a beaucoup évolué au fil des ans, mais son essence est restée la même. Il offre toujours un ORM puissant, un excellent moteur de templating, et surtout une gestion des migrations SQL qui facilite l'évolution des projets. Est-ce un framework "bas niveau" ? Je dirais qu'il est juste au bon niveau. Comparons-le avec des frameworks comme Flask et FastAPI. Ces deux-là sont des micro-frameworks : ils nécessitent d'ajouter chaque brique selon les besoins. C'est un peu comme une autre de mes passions : la musique.
Je suis guitariste, et je vois des similitudes entre les frameworks et les pédales de guitare. Certains musiciens aiment accumuler les pédales, les brancher dans tous les sens, changer d'amplis, etc. D'autres, comme moi, préfèrent un pédalboard intégré, qui offre toutes les fonctionnalités dans un seul ensemble. Certes, il y a des limitations en termes de modularité, mais la simplicité et l'efficacité sont là. Pour moi, Django, c'est mon pédalboard intégré. Il fait tout ce dont j'ai besoin, sans avoir à passer des heures à assembler des morceaux.
En termes de sécurité, Django fait également très fort. Il suffit de mettre à jour le framework pour être sûr que tout est à jour, en un seul coup. Avec Flask, en revanche, il faut jongler avec plusieurs plugins : un pour le templating, un pour l'ORM (SQLAlchemy), et même un autre plugin pour gérer les migrations. C'est complexe et, à mon avis, peu efficace.
J'ai exploré d'autres frameworks Python, mais Django reste celui qui me convainc le plus. Flask a peut-être sa place dans des projets spécifiques, mais uniquement si vous n'avez pas besoin d'un ORM ou si vous ne travaillez pas avec une base de données relationnelle. Dans ce cas, un site web statique ou un proxy est envisageable.
Quant à FastAPI, il a l'avantage de l'asynchrone. J'apprécie cette fonctionnalité, et il est vrai que Django a pris du temps à introduire l'async dans son architecture. Toutefois, même si Django n'est pas encore complètement asynchrone à cause de son ORM, cela ne justifie pas pour moi un changement vers FastAPI. FastAPI est excellent pour des APIs REST, mais si vous avez besoin de GraphQL, vous devrez de toute façon utiliser Graphene, qui peut aussi être intégré dans Django.
En conclusion, Flask peut être utile pour des projets très spécifiques où un backend relationnel n'est pas nécessaire. FastAPI est une bonne option pour les APIs REST, mais si vous avez une base de données relationnelle, je pencherais plutôt pour Django REST Framework. En fin de compte, Django reste mon choix préféré, car il me permet d'avancer rapidement et efficacement, tout en garantissant la sécurité et la modularité nécessaires à mes projets.
Documentation officielle de Django
https://docs.djangoproject.com
Documentation officielle de Flask
https://flask.palletsprojects.com/en/latest/
Documentation officielle de SQLAlchemy
https://www.sqlalchemy.org/
Documentation officielle de FastAPI
https://fastapi.tiangolo.com/
Documentation officielle de Laravel
https://laravel.com/docs
Vincent Cantin Bellemare
6 September 2024