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.