Form e dati delle richieste
Elaborare l'input dell'utente
Form e dati delle richieste è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 3 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 Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
L'oggetto request
Flask fornisce a ogni view l'accesso a un oggetto globale request che contiene tutti i dati in ingresso: campi dei moduli, query string, JSON, intestazioni e altro.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parametri della query string
I dati che seguono ? nell'URL si trovano in request.args. Utilizzi .get() per leggere un valore in modo sicuro.
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')Un modulo HTML
Un modulo invia i dati quando viene inviato. Gli attributi method e action stabiliscono come e dove inviarli.
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')Lettura dei dati del modulo
I campi inviati dal modulo arrivano in request.form. Vi acceda tramite l'attributo name dell'input.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')Accesso sicuro con get
L'utilizzo di request.form['x'] genera un'eccezione se la chiave non esiste. Preferisca request.form.get('x'), che restituisce invece None.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET e POST nella stessa view
Un modello comune consiste nel mostrare il modulo con GET ed elaborare i dati con POST, tutto nella stessa view.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')Convalida dell'input
Non consideri mai attendibile l'input dell'utente. Verifichi che i campi obbligatori esistano e contengano valori validi prima di utilizzarli.
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')Lettura del JSON
I client delle API inviano spesso JSON. request.get_json() analizza il corpo e lo converte in un dict Python.
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')Upload di file
I file caricati si trovano in request.files. Ne salvi uno con il relativo metodo .save() dopo averlo convalidato.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')Redirect dopo POST
Dopo aver gestito un modulo, reindirizzi l'utente per evitare invii duplicati quando la pagina viene aggiornata. Utilizzi redirect(url_for(...)).
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')Messaggi flash
flash() memorizza un messaggio temporaneo che viene mostrato dopo un redirect, ideale per conferme come "Salvato correttamente".
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')Verifica rapida
Verifichi le proprie conoscenze sulla gestione dei moduli.
Riepilogo
Ha elaborato l'input dell'utente in Flask.
request.argsper le query string,request.formper i campi dei modulirequest.get_json()per i corpi JSON,request.filesper gli upload- Convalidi sempre l'input e utilizzi
.get()per accedere ai dati in modo sicuro - Utilizzi il modello POST/Redirect/GET e
flash()per un'esperienza utente più ordinata
Domande Frequenti
La lezione «Form e dati delle richieste» è gratuita?
Sì — il testo completo di «Form e dati delle richieste» è 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 Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Form e dati delle richieste»?
Elaborare l'input dell'utente Eserciti Python 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 Python Academy?
Non è richiesta alcuna esperienza precedente. Python 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 3 di 4.
Quanto tempo richiede la lezione «Form e dati delle richieste»?
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 Python Academy?
Sì. Ogni lezione Python 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
- Route e viste
- Template con Jinja2
- Form e dati delle richieste
- Creare un endpoint REST