Verificare un campo
Fa parte della sezione Form del percorso Django di Coddy. Lezione 10 di 20.
Il modulo accetta un evento datato all'anno scorso. I controlli integrati di Django conoscono i tipi e i limiti, non le regole del tuo sito. Una regola personalizzata relativa a un campo va inserita in un metodo chiamato clean_ seguito dal nome del campo. Un modulo di registrazione che riserva il nome admin al personale:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() lo chiama dopo i controlli specifici del campo, quindi il valore è già convertito: un DateField restituisce una data. Sollevare forms.ValidationError rifiuta il campo e il messaggio compare accanto ad esso.
Il metodo deve restituire il valore: ciò che restituisce viene inserito in cleaned_data. Senza return, il valore diventa None.
Sfida
FacileIn EventForm, rifiuta una data precedente a oggi con il messaggio The date cannot be in the past. Un evento di oggi va bene.
Aggiungi un evento con data di ieri, nel formato 2026-10-30: vedrai The date cannot be in the past.
Provalo tu
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Tutte le lezioni di Form
2Moduli Django
Un modulo DjangoCreare un moduloEsercitati da solo: Playground Django