Redirect dopo il POST (pattern PRG)
Eviti invii duplicati con un redirect.
Redirect dopo il POST (pattern PRG) è una lezione Flask Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Flask Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Flask Academy include 4 lezioni in totale.
Il problema del doppio invio
Dopo l'invio di un form, premere aggiorna invia nuovamente gli stessi dati. Questo può creare ordini, commenti o registrazioni duplicate. 😬
Perché l'aggiornamento ripete l'operazione
Il browser ricorda l'ultima richiesta. Ricaricare una pagina che era il risultato di una richiesta POST invia semplicemente di nuovo quella POST.
Conoscere Post Redirect Get
La soluzione è il modello PRG: accettare la POST e poi reindirizzare il browser a una normale pagina GET invece di eseguire direttamente il rendering.
Elaborare la POST
Per prima cosa esegua il lavoro effettivo nel ramo POST: salvi il record, addebiti la carta o svolga qualunque operazione prevista dal form.
if request.method == "POST":
save_comment(request.form["text"])Reindirizzare, non eseguire il rendering
Invece di restituire un template, restituisca un redirect. Il browser eseguirà quindi una nuova GET, sicura da aggiornare.
from flask import redirect
return redirect("/thanks")Creare la destinazione con url_for
Eviti i percorsi hardcoded. Usi url_for, così la destinazione del reindirizzamento segue i nomi delle route anche se gli URL cambiano in seguito.
return redirect(url_for("thanks"))Lo stato 302
Un reindirizzamento invia una risposta 302 che indica al browser di recuperare un altro URL. Questa seconda richiesta è la GET sicura.
Il gestore GET
La route di destinazione è una normale view GET. Si limita a mostrare una pagina di conferma, che può essere aggiornata continuamente senza effetti collaterali.
@app.route("/thanks")
def thanks():
return render_template("thanks.html")Trasmettere un messaggio flash
Vuole comunicare che l'operazione è riuscita? Imposti un messaggio flash monouso prima del reindirizzamento e lo mostri nella pagina di destinazione.
from flask import flash
flash("Saved!")
return redirect(url_for("thanks"))Reindirizzare anche in caso di errori
Se la validazione non riesce, può mostrare il problema con flash e reindirizzare indietro al form, mantenendo sicuro l'aggiornamento in ogni percorso.
if errors:
flash("Fix the form")
return redirect(url_for("signup"))La view PRG completa
Elabori e poi reindirizzi. Questo schema PRG è lo standard per qualsiasi form che modifica dati sul server.
@app.route("/comment", methods=["POST"])
def comment():
save_comment(request.form["text"])
return redirect(url_for("thanks"))Verifica rapida
Perché PRG impedisce quei duplicati accidentali?
Riepilogo: modello PRG
Ha elaborato la POST, ha reindirizzato a una GET con url_for, ha usato flash per i messaggi e ha reso sicuro ogni aggiornamento. 🎉
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Redirect dopo il POST (pattern PRG)» è gratuita?
Sì — il testo completo di «Redirect dopo il POST (pattern PRG)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Flask Academy, passa a CoddyKit PRO. Il corso Flask Academy include 4 lezioni in totale.
Cosa imparerò in «Redirect dopo il POST (pattern PRG)»?
Eviti invii duplicati con un redirect. Eserciti Flask Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Flask Academy?
Non è richiesta alcuna esperienza precedente. Flask Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Redirect dopo il POST (pattern PRG)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Flask Academy?
Sì. Ogni lezione Flask Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creare un form HTML con POST
- Leggere e impostare valori predefiniti per i parametri di query
- Validare manualmente i campi obbligatori
- Redirect dopo il POST (pattern PRG)