Django vs FastAPI : mon retour d'expérience sur 15 APIs
Refaire en Django une API déjà écrite en FastAPI m'a coûté deux semaines et divisé les performances par trois. Après 15 APIs en 3 ans, voici mes critères de décision concrets entre les deux frameworks, sans le « ça dépend » habituel.
Après 3 ans à développer des APIs Python, j'ai créé plus de 15 projets avec Django REST Framework et FastAPI. Entre les échecs cuisants et les victoires, j'ai appris une chose cruciale : le choix du framework peut faire ou casser ton projet.
Ma plus grande leçon ? Quand j'ai voulu refaire l'API de Housing AI en Django après l'avoir développée en FastAPI, pensant que ça serait "plus professionnel". Résultat : 2 semaines perdues et des performances divisées par 3. J'ai vite fait marche arrière.
Aujourd'hui, je vais te partager mes critères de décision concrets, sans bullshit. Pas de "ça dépend", je te dis exactement quand utiliser quoi, et surtout pourquoi.
Mes critères de choix concrets
Délais courts (moins de 4 semaines) : Django REST Framework gagne haut la main. L'admin Django, l'ORM, les permissions intégrées, tout est là. J'ai monté une API complète en 3 jours pour un client, impossible avec FastAPI.
Performance critique : FastAPI sans hésiter. Sur Housing AI, je traite des milliers de requêtes de scraping simultanées. FastAPI gère l'asynchrone nativement, Django galère même avec les channels.
Équipe junior : Django. Les conventions sont claires, la documentation excellente, et les erreurs plus explicites. Avec FastAPI, j'ai vu des juniors se perdre dans les types Pydantic pendant des heures.
Microservices : FastAPI domine. Plus léger, démarrage plus rapide, et la génération automatique de documentation OpenAPI est un game-changer pour les équipes.
Ma règle personnelle ? Si je dois expliquer le projet à ma grand-mère et qu'elle comprend la logique métier, c'est Django. Si c'est technique et que la vitesse compte, c'est FastAPI.
FastAPI pour Housing AI : le choix de la performance
Pour Housing AI, j'ai choisi FastAPI après avoir testé les deux approches. Voici pourquoi c'était la bonne décision :
Le scraping asynchrone était crucial. Je dois récupérer des données depuis Kijiji, LogisQuebec, Locatio et LogEtudes en parallèle. Avec Django, même en utilisant Celery, j'avais 30 secondes de latence. FastAPI avec async/await ? 5 secondes max.
L'intégration OpenAI. Les appels API vers GPT-4 sont lents. Pouvoir traiter d'autres requêtes pendant que l'IA analyse une annonce, c'est vital pour l'expérience utilisateur.
Comme je l'explique dans mon article sur la construction de Housing AI, la performance était non négociable. Les utilisateurs cherchent un logement, ils n'ont pas le temps d'attendre.
Le piège que j'ai évité : vouloir reproduire l'admin Django. FastAPI n'en a pas, et c'est tant mieux. J'ai construit une interface simple en React plutôt que de perdre du temps avec des solutions bancales.
Django DRF : quand la productivité prime
Django REST Framework brille dans d'autres contextes. Mon dernier projet freelance en était l'exemple parfait :
Un CRM pour une PME locale. Gestion des clients, facturation, reporting. Rien de sexy, mais plein de logique métier complexe. Django m'a fait gagner 2 semaines sur ce projet.
L'admin Django était parfait pour que le client puisse gérer ses données sans interface dédiée. Les permissions par groupe, la gestion des utilisateurs, tout était inclus.
L'ORM Django a géré des relations complexes sans que je me prenne la tête. Avec FastAPI et SQLAlchemy, j'aurais passé des heures sur les migrations et les relations many-to-many.
D'ailleurs, j'ai déjà abordé la problématique de l'authentification JWT entre Django et React dans cet article où j'explique comment j'ai tout simplifié. C'est typique de Django : parfois trop de choix tuent le choix.
Mon conseil : utilise Django DRF quand tu as besoin de sortir quelque chose rapidement et que la logique métier est plus importante que la performance pure.
Les pièges à éviter et mes règles pratiques
Piège #1 : Vouloir du FastAPI partout. J'ai fait cette erreur sur un projet e-commerce. Refaire les paniers, les commandes, les paiements... Django l'aurait fait en 10 lignes avec ses packages existants.
Piège #2 : Sous-estimer la courbe d'apprentissage de FastAPI. Les annotations de type, Pydantic, les dépendances, c'est plus complexe que ça en a l'air. Django est plus accessible.
Piège #3 : Ignorer l'écosystème. Django existe depuis bien plus longtemps que FastAPI. Pour certains besoins spécifiques, tu trouveras dix packages Django contre un seul pour FastAPI.
Mes règles de décision :
- API simple + front React/Vue : FastAPI
- Application web complète : Django
- Équipe de moins de 3 développeurs : Django (sauf si performance critique)
- MVP en moins de 2 semaines : Django
- Microservices : FastAPI
- Prototype pour lever des fonds : Django (plus rapide à démo)
Ma recommandation finale
Après plus de 15 APIs développées, ma philosophie est simple : Django pour construire, FastAPI pour performer.
Si je devais refaire Housing AI aujourd'hui, je resterais sur FastAPI pour l'API principale et j'ajouterais un admin Django séparé pour la gestion des données. Le meilleur des deux mondes.
Pour ton prochain projet ? Demande-toi : « Est-ce que mes utilisateurs vont remarquer si l'API répond en 100 ms ou 500 ms ? » Si oui, FastAPI. Sinon, Django et tu seras productif plus vite.
Comme je le dis souvent, le meilleur framework est celui qui te fait livrer à temps. Et parfois, livrer vite avec Django vaut mieux que parfaire avec FastAPI.
Action concrète : pour ton prochain projet API, teste les deux frameworks sur une fonctionnalité simple. Tu sauras immédiatement lequel correspond à ton style et tes contraintes. L'expérience vaut mieux que tous les articles du monde.
Tags
A lire aussi
Ma formule pour estimer un projet web sans me planter
Un mandat « refonte simple » estimé à 40 heures qui en prend 122 : le genre de dépassement qui te fait travailler à 26 $ l'heure sans t'en rendre compte. Voici la formule d'estimation que j'applique depuis, avec multiplicateur par type de client et marges fixes pour les zones grises récurrentes.
Facturer au forfait ou à l'heure : ce que j'ai appris en freelance
Le forfait mal cadré m'a fait travailler à moitié prix. Le taux horaire pur a puni ma rapidité. Voici comment j'ai fini par structurer mes devis avec un modèle hybride, cadrage payé puis heures plafonnées, et ce que ça a changé dans ma relation client.
React et TypeScript : quand dire non malgré la hype
Un site vitrine de cinq pages n'a aucune raison d'exister en React. Retour d'expérience d'un développeur au Québec sur le choix de stack : quand React et TypeScript valent vraiment le coup, et quand la hype coûte cher au client.

