• # Pour quelle techno ?

    Posté par (Mastodon) . En réponse au message architectures de code. Évalué à 7.

    La bonne question, c'est pour quel type de projet ?
    Çà va conditionner sur quel framework vas-tu développer !

    Django

    Django propose une structuration des projets assez stricte

    + project/
     + settings.py
     + urls.py
     + wsgi.py
    + application/
     + admin.py
     + models.py
     + views.py
     + templates/application
     + urls.py
     + tests.py
     + ...
    

    On peut ajouter autant d'application qu'on veut, çà permet de découpler pas mal. Chaque application a son "namespace" dans la base de données.

    Chacun de ces fichiers a un rôle bien précis, et peut de toutes façon se transformer en module en remplaçant le fichier par un dossier avec le même nom + __init__.py.
    tu peux trouver plein d'applis complémentaires pour ajouter des fonctionnalités à ce que propose django "de base".

    Du coup, à base d'imports relatifs + abus de __all__, tu peux faire croire à tes imports qu'ils sont dans le module principal.

    Pour Django, le modèle de développement n'est pas MVC mais MTV : model / template / view. La partie "Controler" est répartie entre les models et les views, il y a des astuces pour faire en sorte que çà le soit pas trop le boxon, mais en général on retrouve bien ses petits.

    Django propose "de base" la gestion des utilisateurs / groupes / permissions, une interface d'admin paramétrable, la gestion des migrations de la base de données, des templates...

    Et si tu veux faire du REST, tu as django-rest-framework

    Flask

    Flask a quant à lui une démarche très différente : tu fais ce que tu veux, il ne t'impose rien ! Du coup, tu n'as pas d'ORM, pas d'admin, pas de gestion des utilisateurs ni des sessions... juste des routes et les fonctions associées.

    Il y a bien sûr des tas de plugins qui te permettent d'inclure ces fonctionnalités !

    Il y a aussi des applis plus touffues développées sur Flask, mais le principe reste le même : tu as les clés en main.

    Et sinon ?

    J'utilise pour ma part beaucoup django, pour les applis "classiques" type CRUD ou similaires, et flask si je n'ai pas besoin de base de données, par exemple pour faire un utilitaire Web.

    Ah, et j'ai aussi un gros intranet qui tourne avec Wagtail, une surcouche de django, qui fait très bien le taff : admin du CMS jolie et pratique, assez couple à mettre en place (1 mois de boulot ?), et la possibilité d'inclure des application django de façon transparentes pour des trucs "à côté" du CMS.

    Il y a plein d'autres framework web à base de python, surtout que celui-ci a le vent en poupe, mais je ne pratiques que ces 2 là, car ils correspondent bien à mes besoins...

    Ah, aussi, si tu es dans une boîte, fais toi offrir une licence PyCharm, les trucs à base de VSCod(uim) sont largement en dessous ! En prime, le support de Flask et Django dans pycharm est très bon !