Comment organiser un relativement grand Flacon d'application?
Je suis en train de construire mon premier Flacon application et je ne peux pas trouver une bonne, propre Pythonic façon de l'organisation de mon application.
Je ne veux pas avoir tout dans un seul .py fichier comme dans l'exemple.
Je voudrais avoir chaque partie de mon application dans un module séparé.
Ce serait une bonne façon d'organiser les choses?
- J'aime bien la mise en page est expliqué ici: flask.pocoo.org/docs/patterns/packages
- Là, ils sont à l'aide de la circulaire importations que je voudrais éviter.
- Vrai, mais je ne pense pas que c'est évitable si vous souhaitez utiliser l'application.itinéraire décorateur.
Vous devez vous connecter pour publier un commentaire.
J'ai créé une Gourde réutilisable projet appelé "Fbone", n'hésitez pas à le vérifier et fourche 🙂
Fbone (Flacon os) est un Flacon (Python microframework) modèle/bootstrap/standard de l'application.
Aperçu
btw, je viens de trouver cette wiki sur la construction d'un grand projet avec Flacon utile, pls vérifier!
fab setup
Warning: Command(s) not found: setup
Flacon de 0,7 implémente Les bleus. Ils sont parfaits pour l'utilisation de la
route
décorateur, sans importer le principal objet de l'application.templates
etstatic
dossiers.Assurez-vous de lire Matt Wright magnifique post sur le sujet.
Le post caractéristiques:
Une description d'une structure pour les gros flacon de projets
Un exemple d'application sur Github
Une description des meilleures pratiques de conception en général quand il s'agit de grosses applications web, comme le modèle MVC, App les usines, les Services et la Migration de Données pour n'en nommer que quelques-uns (le plus intéressant, à mon humble avis).
Je suis en train de travailler sur un (selon mes critères) gros Flacon de projet (5000 lignes de code Python et c'est seulement à moitié fini). Le client souhaite que le projet pour être modulaire, donc j'ai pris cette apporach:
Mon dossier structure ressemble à ceci:
Dans
modules.yml
je définir mes modules, y compris le nom et l'URL. De cette façon, le client est en mesure d'activer/désactiver des modules sans toucher un seul fichier Python. En outre, je crée les menus en fonction de la liste des modules. Par convention, chaque module possède sa propre Python-modulecontrollers/
qui charge sonmodel
demodels/
. Chaque contrôleur définit unBlueprint
stockées en tant que le nom du contrôleur. E. g. pour unuser
module, j'ai danscontrollers/user.py
:De cette façon, je peux lire le
modules.yml
dans mon__init__.py
et de charger et d'enregistrer tous les modules activés de façon dynamique:Je l'espère, cela peut être un peu d'inspiration pour vous 🙂
project_name/
). Il y a également unetests/
et un dossier descripts/
dossier (pour les scripts exécutables). Pourtests/
, il serait astucieux d'utiliser la même structure que dans la réponse:tests/models/
pour les essais sur modèle,tests/controllers/
pour contrôleur de tests, you name it. Qui aurait besoin d'un peu de surcharge pour le maintien de la structure, mais il serait très facile de trouver les fichiers dont vous avez besoin.J'ai travaillé sur un réseau social construit sur le haut du Flacon. La chose de spécial à propos de mon projet est que le serveur est purement servir de l'API de points de terminaison et le frontend est un Squelette d'application. Le Flacon de la structure que j'ai pris est le suivant:
├── app
│ ├── api
│ │ ├── auth.py
│ │ └── ...
│ ├── app.py
│ ├── common
│ │ ├── constants.py
│ │ ├── helpers.py
│ │ ├── response.py
│ │ └── ...
│ ├── config.py
│ ├── extensions.py
│ ├── frontend
│ │ └── controllers.py
│ ├── static
│ │ └── ...
│ ├── templates
│ │ ├── app.html
│ │ └── ...
│ └── users
│ ├── UserConstants.py
│ ├── UserForms.py
│ ├── UserHelpers.py
│ ├── UserModels.py
│ └── __init__.py
├── alembic
| ├── version
│ └── ...
├── tests
│ └── ...
Vous pouvez lire plus en profondeur post que j'ai écrit sur le sujet ici. Je l'ai trouvé beaucoup plus intuitive pour séparer les différents domaines fonctionnels de son propre dossier.
J'ai travaillé sur le code il y a un moment et open source complètement! Vous pouvez le vérifier sur github.
J'ai créé un Flacon application yapper à partir de zéro et a intégré avec gulp pour les deux frontend et backend de développement.
C'est un simple moteur de blog, mais peut être facilement modifié pour le développement en fonction des besoins. Il est bien structuré à l'aide de Plans.
La caisse de la page du projet yapper