Parfois, tu ne peux pas répondre directement. Tu dois envoyer l'utilisateur ailleurs ou lui dire qu'il a fait une bêtise.
Redirections (redirect)
L'utilisateur se connecte ? Hop, on le renvoie vers l'accueil.
Il faut importer redirect et url_for.
Pourquoi url_for ?
Ne jamais écrire les URL en dur (/accueil). Si demain tu changes la route en /home, tu dois modifier tout ton code.
url_for('nom_de_la_fonction') génère l'URL pour toi. C'est la vie.
from flask import redirect, url_for
@app.route('/')
def home():
return "Bienvenue chez toi !"
@app.route('/old-home')
def old_home():
# Redirige vers la fonction 'home'
return redirect(url_for('home'))
Erreurs & Abort (abort)
Si l'utilisateur demande un article qui n'existe pas, ou tente d'accéder à l'admin sans être admin... on arrête tout.
from flask import abort
@app.route('/admin')
def admin():
est_admin = False # Simulons un utilisateur lambda
if not est_admin:
abort(403) # Forbidden (Interdit)
return "Bienvenue Maître"
Personnaliser les pages d'erreur
La page 404 de base de Flask est moche (désolé Flask). Tu peux la personnaliser.
@app.errorhandler(404)
def page_not_found(error):
return "<h1>Oups... Perdu ? 🏳️</h1><p>Cette page n'existe pas.</p>", 404
Note bien qu'on doit renvoyer le code 404 à la fin, sinon Flask renverra 200 OK avec le contenu de ta page d'erreur (ce qui est mauvais pour le SEO et les robots).