Cours Flask : Routes, Formulaires, Flash, Redirect, Jinja
1 Qu’est-ce qu’une route Flask ?
Une route est un chemin (URL) que ton site gère. Avec Flask, tu crées une route avec :
@[Link](’/chemin’)
def fonction():
return "Réponse à afficher"
Objectif du cours
Apprendre à :
— Créer et afficher un formulaire HTML simple
— Récupérer et valider les données côté serveur
— Afficher des messages d’erreur ou de succès
— Utiliser flash et redirect correctement
— Appliquer les bonnes pratiques de sécurité (XSS, CSRF, etc.)
Rappel : Flask imports
from flask import Flask, request, render_template, redirect, flash, url_for
- Flask → créer app - request → récupérer données - render_template → afficher HTML - redirect → rediriger utilisateur - flash →
afficher message temporaire - url_for → générer URL d’une route
app = Flask(__name__)
Crée l’instance principale de ton application Flask.
__name__ permet à Flask de savoir où se trouvent tes fichiers, notamment templates et static.
Exemple :
@[Link](’/’)
def home():
return "Bienvenue"
app.secret_key = ’votre_clé_secrète’
Définit la clé secrète de ton application, obligatoire pour utiliser flash et les sessions.
Sans secret_key, flash() ne fonctionnera pas.
Exemple :
app.secret_key = ’hsue3nsb82hsy3s9d02ns’
# ou mieux :
import os
app.secret_key = [Link](’SECRET_KEY’)
Qu’est-ce que Jinja ?
Jinja est le moteur de templates utilisé par Flask pour afficher des pages HTML dynamiques.
- Avec variable affiche des variables Python dans le HTML. - Avec
3 Qu’est-ce que flash dans Flask ?
Permet d’afficher des messages temporaires comme : - message de succès après inscription - erreur après mauvais mot de passe -
confirmation après suppression
flash("Message à afficher")
Nécessite :
app.secret_key = ’une_cle_secrete’
4 Comment afficher les messages flash dans Jinja ?
Dans le fichier .html :
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for msg in messages %}
<li>{{ msg }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
Cela récupère les messages flashés et les affiche une seule fois après redirection.
2 Les méthodes GET et POST
GET : - Méthode par défaut - Envoie les données dans l’URL - Utilisée pour afficher des pages ou récupérer des informations
POST : - Envoie les données dans le corps de la requête - Utilisée pour envoyer des données au serveur (formulaire) - Plus sécurisée
pour envoyer des informations sensibles
3 Comment gérer GET et POST dans Flask ?
Par défaut, une route accepte uniquement GET. Pour utiliser POST :
@[Link](’/chemin’, methods=[’GET’, ’POST’])
Exemple d’utilisation : - L’utilisateur arrive sur la route (GET) affiche le formulaire - L’utilisateur soumet le formulaire (POST)
Flask récupère les données
if [Link] == ’POST’:
nom = [Link](’nom’)
6 Résumé rapide
@[Link]() pour créer des routes GET méthode par défaut pour afficher ou récupérer des données POST envoi sécurisé des
données au serveur Pour activer POST :
@[Link](’/chemin’, methods=[’GET’, ’POST’])
[Link](’champ’) récupérer données envoyées par POST [Link](’champ’) récupérer données envoyées par GET
Affichage des messages (flash)
Dans le template :
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class="flashes">
{% for msg in messages %}
<li>{{ msg }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
Dans le code Python :
flash("Message envoyé avec succès")
flash("Erreur de validation", ’error’)
1 C’est quoi redirect dans Flask ?
redirect redirige automatiquement l’utilisateur vers une autre route ou URL après une action.
Utilisation :
from flask import redirect
return redirect(’/nouvelle_page’)
Meilleure pratique avec url_for :
from flask import redirect, url_for
return redirect(url_for(’nom_fonction’))
où ’nom_fonction’ est le nom de la fonction de ta route cible.