Common folder/file structure in Flask app
You should check out the Larger Applications page in the Patterns section of the Flask docs: http://flask.pocoo.org/docs/patterns/packages/. It seems to be the model that most people follow when their application calls for a package instead of a module.
I believe views.py
is what you are calling routes.py
. After that, models would go in models.py
, forms would go in forms.py
, etc.
An example of a FlaskApp directory:
/yourapp
/run.py
/config.py
/app
/__init__.py
/views.py
/models.py
/static/
/main.css
/templates/
/base.html
/requirements.txt
/yourappenv
run.py
- contains the actual python code that will import the app and start the development server.config.py
- stores configurations for your app.__init__.py
- initializes your application creating a Flask app instance.views.py
- this is where routes
are defined.models.py
- this is where you define models for your application.static
- contains static files i.e. CSS, Javascript, imagestemplates
- this is where you store your html
templates i.e. index.html
, layout.html
requirements.txt
- this is where you store your package dependancies, you can use pip
yourappenv
- your virtual environment for development
I think flask is micro framework and now you must decide how create files and folders.
i use this way :
- flask folders and files structure -> https://gist.github.com/4545740
this is near Django structure
i suggest you see some project to give you what you want
- danjac / newsmeme — Bitbucket -> https://bitbucket.org/danjac/newsmeme/overview
- sean-/flask-skeleton · GitHub -> https://github.com/sean-/flask-skeleton
I would say if you split the application use divisional rather than functional structure. I advocate this because you are more likely to work on 1 of these divisional components at any one time.
This type of structure lends itself well on marketplace or SaaS apps where different user groups use a different type of views. API only flask app I might use functional splitting.
Here are examples from Flask Blueprints. Blueprints are essentially documented advice how to split Flask application for more manageable pieces. More on this at : http://exploreflask.com/en/latest/blueprints.html
Here is an example of divisional splitting. See how each feature is grouped together.
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
Here is the functional example >
yourapp/
__init__.py
static/
templates/
home/
control_panel/
admin/
views/
__init__.py
home.py
control_panel.py
admin.py
models.py