Rediriger après POST (modèle PRG)
Évitez les envois en double grâce à une redirection.
Rediriger après POST (modèle PRG) est une leçon Flask Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flask Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flask Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Double Submit Problem
After a form post, hitting refresh resends the same data. That can create duplicate orders, comments, or signups. 😬
Why Refresh Repeats
The browser remembers the last request. Reloading a page that was the result of a POST simply fires that POST again.
Meet Post Redirect Get
The fix is the PRG pattern: accept the POST, then redirect the browser to a plain GET page instead of rendering directly.
Process the POST
First do the real work inside the POST branch: save the record, charge the card, whatever the form was for.
if request.method == "POST":
save_comment(request.form["text"])Redirect, Do Not Render
Instead of returning a template, return a redirect. The browser then makes a fresh GET that is safe to refresh.
from flask import redirect
return redirect("/thanks")Build the Target With url_for
Avoid hardcoded paths. Use url_for so the redirect target follows your route names even if URLs change later.
return redirect(url_for("thanks"))The 302 Status
A redirect sends a 302 response telling the browser to go fetch another URL. That second request is the safe GET.
The GET Handler
The target route is an ordinary GET view. It just shows a confirmation page and can be refreshed all day with no side effects.
@app.route("/thanks")
def thanks():
return render_template("thanks.html")Carry a Flash Message
Want to say it worked? Set a one time flash message before redirecting and show it on the destination page.
from flask import flash
flash("Saved!")
return redirect(url_for("thanks"))Redirect on Errors Too
If validation fails, you can flash the problem and redirect back to the form, keeping every path refresh safe.
if errors:
flash("Fix the form")
return redirect(url_for("signup"))The Full PRG View
Process, then redirect. This PRG shape is the standard for any form that changes data on the server.
@app.route("/comment", methods=["POST"])
def comment():
save_comment(request.form["text"])
return redirect(url_for("thanks"))Quick Check
Why does PRG stop those accidental duplicates?
Recap: PRG Pattern
You processed the POST, redirected to a GET with url_for, used flash for messages, and made every refresh safe. 🎉
Questions Fréquemment Posées
La leçon « Rediriger après POST (modèle PRG) » est-elle gratuite ?
Oui — le texte complet de « Rediriger après POST (modèle PRG) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flask Academy, passe à CoddyKit PRO. Le cours Flask Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Rediriger après POST (modèle PRG) » ?
Évitez les envois en double grâce à une redirection. Tu pratiques Flask Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Flask Academy ?
Aucune expérience préalable n'est requise. Flask Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Rediriger après POST (modèle PRG) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Flask Academy ?
Oui. Chaque leçon Flask Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Construire un formulaire HTML qui envoie des données
- Lire les paramètres de requête et leur attribuer une valeur par défaut
- Valider manuellement les champs obligatoires
- Rediriger après POST (modèle PRG)