Flask Academy · Lezione

Redirect dopo il POST (pattern PRG)

Eviti invii duplicati con un redirect.

Lezione 4 di 413 passaggi

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. 🎉

Gratis per iniziare

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

  1. Creare un form HTML con POST
  2. Leggere e impostare valori predefiniti per i parametri di query
  3. Validare manualmente i campi obbligatori
  4. Redirect dopo il POST (pattern PRG)
← Torna a Flask Academy