Aller au contenu

Structurer le code d'un projet Flask#

Afin de faciliter le développement et la maintenance d'une application Flask, une organisation est nécessaire. Je vous montre comment organiser les fichiers d'un projet Flask.

Structure#

Ci-dessous la structure de fichiers à créer dans votre projet Flask

Flask Project Structure
|-- app
|   |-- static
|   |   `-- css
|   |       `-- style.css
|   |-- templates
|   |   |-- base.html
|   |   |-- create_url.html
|   |   |-- index.html
|   |   |-- update_url.html
|   |   `-- view_url.html
|   |-- __init__.py
|   |-- models.py
|   `-- views.py
|-- config.py
|-- init_db.py
|-- requirements.txt
`-- run.py

Configuration#

Dans le fichier config.py, nous allons renseigner des paramètres du projet

config.py
import os

class Config:
    SECRET_KEY = '=&zn8lo42ycteu*y_u@os&%xrn@o*4$@x^%g8s^mb%z^q19d-k'
    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(BASE_DIR, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # Others Config
    BASE_URL = "https://knk.com/"

Dépendances#

Dans le fichier requirements.txt, copiez et collez les dépendances du projet

requirements.txt
Flask==2.2.5
Flask-SQLAlchemy==3.0.5
watchdog==3.0.0
hashids==1.3.1

Exécutez les commandes suivantes pour mettre en place un environnement virtuel

# Create a vritual environment
python -m venv env

# Activate the vritual environment
source env/Scripts/activate

# Install dependancies
pip install -r requirements.txt

Vous pouvez vérifiez que les dépendances ont été bien installées avec la commande suivante

pip list
Package           Version
----------------- -------
click             8.1.4
colorama          0.4.6
Flask             2.2.5
Flask-SQLAlchemy  3.0.5
greenlet          2.0.2
hashids           1.3.1
itsdangerous      2.1.2
Jinja2            3.1.2
MarkupSafe        2.1.3
pip               22.3.1
setuptools        65.5.0
SQLAlchemy        2.0.18
typing_extensions 4.7.1
watchdog          3.0.0
Werkzeug          2.3.6

Configuration#

Dans le fichier config.py, nous allons renseigner des paramètres du projet

app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from hashids import Hashids

app = Flask(__name__)
app.config.from_object('config.Config')

db = SQLAlchemy(app)

hashids = Hashids(min_length=4, salt=app.config['SECRET_KEY'])

Dans le fichier run.py, copiez et collez le code ci-dessous

run.py
#!/usr/bin/env python
# coding : utf-8

from app import app

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)


Dans la prochaine section, nous verrons comment ajouter une base de données dans un projet Flask.