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és | Django | Flask |
|---|---|---|
| Philosophie de conception | Prêt à l’emploi (batteries incluses) | Micro-framework, extensible selon les besoins |
| ORM | ORM Django intégré | Flask-SQLAlchemy (extension) |
| Migrations de base de données | Intégré : makemigrations/migrate | Flask-Migrate (extension) |
| Authentification des utilisateurs | Module d’authentification intégré | Flask-Login (extension) |
| Panneau d'administration | Django Admin intégré | Flask-Admin (extension) |
| Moteur de templates | Templates Django | Jinja2 (la syntaxe est presque identique) |
| Configuration des routes | Configuration centralisée dans urls.py | Dé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
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.
| Commande | Fonction |
|---|---|
| flask run | Démarrer le serveur de développement |
| flask run --debug | Démarrer le serveur + rechargement à chaud + mode débogage |
| flask routes | Lister toutes les routes enregistrées |
| flask shell | Entrer 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
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.