103 votes

Structure commune de dossiers/fichiers dans une application Flask

Je viens de créer une application flask et jusqu'à présent j'ai un routeur pour mon modèle "Hello world !".

J'aimerais ajouter un peu (beaucoup) plus de fonctionnalités, mais je me demande comment je dois structurer le répertoire des applications.

Quelle est la façon la plus courante de structurer une application Flask ? Par exemple, dois-je créer un routes.py pour tous mes itinéraires ? Où va le matériel de SQLAlchemy ? Les modèles doivent-ils être dans models.py ?

51voto

dirn Points 10695

Vous devriez consulter la page sur les grandes applications dans la section Patterns de la documentation de Flask : http://flask.pocoo.org/docs/patterns/packages/ . Il semble que ce soit le modèle que la plupart des gens suivent lorsque leur application fait appel à un paquet au lieu d'un module.

Je crois views.py est ce que vous appelez routes.py . Après cela, les modèles vont dans models.py les formulaires seraient envoyés forms.py etc.

47voto

roy Points 1093

Un exemple de répertoire FlaskApp :

    /yourapp  
        /run.py  
        /config.py  
        /app  
            /__init__.py
            /views.py  
            /models.py  
            /static/  
                /main.css
            /templates/  
                /base.html  
        /requirements.txt  
        /yourappenv

run.py - contient le code python réel qui va importer l'application et démarrer le serveur de développement.
config.py - stocke les configurations pour votre application.
__init__.py - initialise votre application en créant une instance d'application Flask.
views.py - c'est là que routes sont définis.
models.py - c'est ici que vous définissez les modèles pour votre application.
static - contient des fichiers statiques, c'est-à-dire des CSS, des Javascript, des images.
templates - c'est là que vous stockez votre html modèles, c'est-à-dire index.html , layout.html
requirements.txt - c'est là que vous stockez les dépendances de vos paquets, vous pouvez utiliser pip
yourappenv - votre environnement virtuel pour le développement

29voto

Kimmo Hintikka Points 420

Je dirais que si vous divisez l'application, utilisez une structure divisionnaire plutôt que fonctionnelle. Je préconise cela parce que vous êtes plus susceptible de travailler sur un de ces composants divisionnaires à un moment donné.

Ce type de structure se prête bien aux applications de marché ou SaaS, où différents groupes d'utilisateurs utilisent un type de vue différent. La seule application flask API que je pourrais utiliser est le fractionnement fonctionnel.

Voici des exemples tirés de Flask Blueprints. Les Blueprints sont essentiellement des conseils documentés sur la façon de diviser une application Flask en morceaux plus faciles à gérer. Plus d'informations à ce sujet sur : http://exploreflask.com/en/latest/blueprints.html

Voici un exemple de division. Voyez comment chaque caractéristique est regroupée.

yourapp/
    __init__.py
    admin/
        __init__.py
        views.py
        static/
        templates/
    home/
        __init__.py
        views.py
        static/
        templates/
    control_panel/
        __init__.py
        views.py
        static/
        templates/
    models.py

Voici l'exemple fonctionnel >

yourapp/
    __init__.py
    static/
    templates/
        home/
        control_panel/
        admin/
    views/
        __init__.py
        home.py
        control_panel.py
        admin.py
    models.py

12voto

Efazati Points 2507

Je pense que Flask est un micro-cadre et maintenant vous devez décider comment créer des fichiers et des dossiers.

J'utilise cette méthode :

c'est proche de la structure de Django

Je vous suggère de voir un projet qui vous donnera ce que vous voulez.

11voto

Nuhman Points 411

Toute personne à la recherche d'une structure simple et adaptée aux débutants pour le projet flask peut trouver cela utile :

   |__movies 
     |__run.py 
     |__app     
         templates
            index.html
            signup.html
         __init__.py
         routes.py

Ici ' films ' est le nom donné à l'application principale. Elle contient ' run.py et un dossier appelé application '. ' application Le dossier ' contient tous les fichiers flask nécessaires tels que ' modèles dossier ", __init __.py ', et ' routes.py '.

Contenu de :

run.py :

from app import app

__init.py__ :

from flask import Flask

app = Flask(__name__)

from app import routes

app.run(debug=True)

routes.py :

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X