Application web Flask

Ce chapitre vous emmène de zéro, en utilisant Flask pour créer votre première application web et comprendre la philosophie de conception des microframeworks.


Différences de positionnement entre Flask et Django

Django est un framework full-stack « tout-en-un », avec ORM, moteur de templates, interface d’administration, authentification des utilisateurs, gestion des formulaires, etc. intégrés.

Flask est un microframework—Le cœur est minimal, il ne fournit que le routage et le rendu de templates ; les autres fonctionnalités sont ajoutées à la demande via des extensions.

FonctionnalitésDjangoFlask
Philosophie de conceptionPrêt à l’emploi (batteries incluses)Micro-framework, extensible selon les besoins
ORMORM Django intégréFlask-SQLAlchemy (extension)
Migrations de base de donnéesIntégré : makemigrations/migrateFlask-Migrate (extension)
Authentification des utilisateursModule d’authentification intégréFlask-Login (extension)
Panneau d'administrationDjango Admin intégréFlask-Admin (extension)
Moteur de templatesTemplates DjangoJinja2 (la syntaxe est presque identique)
Configuration des routesConfiguration centralisée dans urls.pyDéclarer les décorateurs localement

Recommandation : les débutants qui veulent des résultats rapides utilisent Django ; ceux qui aiment le contrôle total et l'assemblage à la demande utilisent Flask.


Préparation de l’environnement

Confirmez la version de Python (nécessite 3.8 ou supérieure) :

$ python3 --version
Python 3.12.0

Créer un environnement virtuel et installer Flask

$ python3 -m venv venv
$ source venv/bin/activate           # Windows:venv\Scripts\activate
(venv) $ pip install flask

Vérifiez l'installation :

(venv) $ python -c "import flask; print(flask.__version__)"
3.1.0

Application Flask minimale

Une application Flask n'a besoin que d'un seul fichier Python.

Exemple

# Chemin du fichier : app.py
from flask import Flask

# Créer une instance d'application Flask
# __name__ indique à Flask l'emplacement du module courant (utilisé pour trouver les templates et les fichiers statiques)
app = Flask(__name__)

# @app.route("/") — décorateur de route : exécute la fonction suivante lors de l'accès au chemin /
@app.route("/")
def index():
    return '<h1>Bienvenue sur EXAMPLE Blog</h1>'

# Si vous exécutez python app.py directement (au lieu de flask run), démarrez le serveur de développement
if __name__ == '__main__':
    app.run(debug=True)

Démarrer le serveur de développement

(venv) $ flask run
 * Running on http://127.0.0.1:5000

Visitez http://127.0.0.1:5000/ dans votre navigateur et consultez le contenu de la page.

Activez le rechargement à chaud (redémarre automatiquement le serveur après les modifications du code) :

(venv) $ flask run --debug

flask runRecherche par défautapp.pyinappInstance. Si le nom du fichier ou le nom de l'instance est différent, vous devez définir des variables d'environnement :FLASK_APP=myapp.py(nom du fichier),FLASK_APP=myapp:create_app()(fonction de fabrique).


Outil en ligne de commande Flask

exceptflask run, Flask fournit également d'autres commandes utiles.

CommandeFonction
flask runDémarrer le serveur de développement
flask run --debugDémarrer le serveur + rechargement à chaud + mode débogage
flask routesLister toutes les routes enregistrées
flask shellEntrer dans le shell interactif (importe automatiquement l'instance de l'application)

Planification de la structure des répertoires du projet

Bien que Flask prenne en charge les applications monofichier, les projets réels ont besoin d'une organisation claire des répertoires.

blog_project/
├── app/
│   ├── __init__.py          # 应用工厂 create_app()(第十章引入)
│   ├── blueprints/          # 路由 Blueprint(第四章分离)
│   ├── templates/           # Jinja2 模板(第二章创建)
│   ├── static/              # 静态文件 CSS/JS/图片
│   ├── models.py            # SQLAlchemy 模型(第三章创建)
│   └── forms.py             # Flask-WTF 表单(第八章创建)
├── config.py                # 配置文件
├── app.py                   # 应用入口(第一章从这里开始)
└── .env                     # 环境变量

Mise en pratique : route de la page d'accueil du blog

Créez le squelette du projet, configurez la route de la page d'accueil et laissez le navigateur afficher un message de bienvenue.

Exemple

# Chemin du fichier : app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    """Page d'accueil du blog"""
    return """
<h1>Bienvenue sur le blog EXAMPLE</h1>
<p>Ceci est un site vitrine de blog personnel construit avec Flask.</p>
<p>D'autres contenus arrivent bientôt, restez à l'écoute.</p>
    """


@app.route("/about")
def about():
    """Page à propos"""
    return '<h1>À propos de ce site</h1><p>Notes sur l'apprentissage du front-end et du back-end.</p>'

Exécutez :

flask run

Visitez la page d'accueil et la page à propos pour confirmer que les routes fonctionnent correctement.


Résumé du chapitre

Dans ce chapitre, vous avez réalisé trois choses : créé un environnement virtuel et installé Flask, compris la différence de positionnement entre Flask en tant que microframework et Django en tant que framework tout-en-un, et écrit votre première page de route.

À retenir : une application Flask minimale ne nécessite queFlask(__name__) + @app.route()Décorateur, en utilisantflask runDémarrer.

autres extensions