Flask n'impose aucune arborescence, cependant lorsque les projets grossissent ou pour pouvoir travailler en équipe, il est judicieux d'adopter certaines recommandations :
/home/user/Projects/aAppProject
├── myapp/ # le paquetage de l'application flask
│ ├── __init__.py
│ ├── db.py
│ ├── schema.sql
│ ├── auth.py
│ ├── blog.py
│ ├── templates/ # les modèles de type jinja2
│ │ ├── base.html
│ │ ├── auth/
│ │ │ ├── login.html
│ │ │ └── register.html
│ │ └── blog/
│ │ ├── create.html
│ │ ├── index.html
│ │ └── update.html
│ └── static/ # les ressources statiques
│ └── style.css
├── tests/ # les tests unitaires
│ ├── conftest.py
│ ├── data.sql
│ ├── test_factory.py
│ ├── test_db.py
│ ├── test_auth.py
│ └── test_blog.py
├── .venv/ # L'environnement virtuel Python
├── README.md #
├── install
└── MANIFEST.in
Pour lancer l'application :
cd /home/user/Projects/aAppProject flask --app myapp run --debug
app.py
ou wsgi.py
flask l'exécute automatiquement, l'argument --app
n'est pas nécessaire.
Pour pouvoir lancer automatiquement une application Flask :
init.py
contient soit l'instanciation d'un objet de type Flask, soit une fonction retournant cet objet. Cette fonction est désignée factory par défaut flask s'attend à ce qu'elle soit appelée create_app
.Dans ce cas on peut lancer l'application avec la commande :
flask --app aAppPackage run --debug # Si la fonction factory a un autre nom que create_app utiliser la syntaxe package:factory_function flask --app aAppPackage:another_factory_name run --debug