Validazione personalizzata con i metodi clean
Aggiungere regole di validazione a livello di campo e di form
Validazione personalizzata con i metodi clean è una lezione Django 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 Django Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Django Academy include 4 lezioni in totale.
Oltre le regole integrate
I campi del modello forniscono controlli di base, ma le applicazioni reali richiedono regole personalizzate. Django esegue i suoi metodi clean per applicare esattamente la logica desiderata. 🧹
clean a livello di campo
Per convalidare un singolo campo, aggiunga un metodo denominato clean_fieldname. Django lo chiama automaticamente durante la validazione di quel campo.
def clean_title(self):
title = self.cleaned_data["title"]
return titleLeggere da cleaned_data
All'interno di un metodo clean, recuperi il valore da cleaned_data. A questo punto Django lo ha già convertito per Lei nel tipo Python corretto.
title = self.cleaned_data["title"]Sollevare un'eccezione per rifiutare
Se un valore viola la regola, sollevi una ValidationError. Django la intercetta e mostra il messaggio accanto a quel campo nel form.
from django.core.exceptions import ValidationError
raise ValidationError("Title is too short.")Un controllo reale su un campo
Qui rifiutiamo i titoli più corti di cinque caratteri. Ricordi che deve restituire il valore alla fine, affinché rimanga in cleaned_data.
def clean_title(self):
title = self.cleaned_data["title"]
if len(title) < 5:
raise ValidationError("Too short.")
return titleRestituire sempre il valore
La regola d'oro di clean_fieldname è: restituisca il valore ripulito. Se lo dimentica, il campo diventa None anche quando l'input era valido.
clean a livello di form
Per confrontare due campi, sovrascriva il metodo clean dell'intero form. Viene eseguito dopo il completamento di tutti i controlli a livello di campo.
def clean(self):
cleaned = super().clean()
return cleanedChiamare prima super().clean()
Inizi il clean a livello di form chiamando super().clean(). In questo modo ottiene il dizionario completo cleaned_data raccolto dai controlli sui campi.
cleaned = super().clean()
start = cleaned.get("start")
end = cleaned.get("end")Confrontare due campi
Ora può applicare regole tra più campi, ad esempio assicurandosi che end venga dopo start. Sollevi ValidationError quando la relazione non è corretta.
if start and end and end < start:
raise ValidationError("End must be after start.")Associare gli errori a un campo
Nel clean a livello di form può associare un errore a un campo con add_error. Il messaggio apparirà accanto a quell'input, anziché in alto.
self.add_error("end", "End must be after start.")Ordine della validazione
Django esegue prima ogni clean_fieldname e infine il clean a livello di form. Conoscere quest'ordine aiuta a collocare ogni regola nel punto giusto.
Verifica rapida
Dove dovrebbe essere definita una regola che confronta due campi?
Riepilogo: validazione personalizzata
Ben fatto! Utilizzi clean_fieldname per i singoli campi e il clean a livello di form per le regole tra più campi. Sollevi ValidationError per rifiutare i valori e restituisca sempre i valori ripuliti. 🎉
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 «Validazione personalizzata con i metodi clean» è gratuita?
Sì — il testo completo di «Validazione personalizzata con i metodi clean» è 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 Django Academy, passa a CoddyKit PRO. Il corso Django Academy include 4 lezioni in totale.
Cosa imparerò in «Validazione personalizzata con i metodi clean»?
Aggiungere regole di validazione a livello di campo e di form Eserciti Django 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 Django Academy?
Non è richiesta alcuna esperienza precedente. Django 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 «Validazione personalizzata con i metodi clean»?
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 Django Academy?
Sì. Ogni lezione Django 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
- Dichiarare un ModelForm e Meta.fields
- form.save() e commit=False
- Validazione personalizzata con i metodi clean
- Widget, etichette e testo di supporto