0Pricing
Python Academy · Lezione

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.args per le query string, request.form per i campi dei moduli
  • request.get_json() per i corpi JSON, request.files per 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

  1. Route e viste
  2. Template con Jinja2
  3. Form e dati delle richieste
  4. Creare un endpoint REST
← Torna a Python Academy