Un modulo Django
Fa parte della sezione Form del percorso Django di Coddy. Lezione 5 di 20.
Invia il modulo senza una data e il sito va in crash: Django non può convertire il testo vuoto in una data. Controllare ogni campo a mano richiederebbe codice per ogni campo e per ogni errore.
Un modulo Django descrive i campi una sola volta, in forms.py, e ogni campo sa quali valori accetta. Il modulo di prenotazione di un ristorante:
from django import forms
class BookingForm(forms.Form):
name = forms.CharField(max_length=50)
day = forms.DateField()
guests = forms.IntegerField()Ogni campo è obbligatorio, a meno che tu non specifichi diversamente, e un CharField rimuove prima gli spazi, quindi un nome composto solo da spazi viene considerato vuoto.
Nella vista, crea il modulo con i dati ricevuti e chiama is_valid(): controlla ogni campo e restituisce True o False. Poi form.cleaned_data contiene i valori convertiti in Python, quindi cleaned_data["day"] è un datetime.date, non testo:
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]Sfida
FacileLascia che un modulo Django controlli il nuovo evento.
- In
events/forms.py, scriviEventForm:titleeplacecome testo fino a 100 caratteri,datecome data. - In
new_event, crea il modulo a partire darequest.POST. Se è valido, crea l’evento a partire daform.cleaned_datae reindirizza alla pagina dell’evento. In caso contrario, impostaerrorsuPlease check the form.
Invia il modulo senza una data: vedrai Please check the form.
Provalo tu
from django import forms
Tutte le lezioni di Form
Esercitati da solo: Playground Django