Un modulo Django
Fa parte della sezione Form del percorso Django di Coddy. Lezione 5 di 20.
Invii 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. Un modulo di prenotazione per 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 è considerato vuoto.
Nella vista, crea il modulo con i dati ricevuti e chiama is_valid(): controlla ogni campo e restituisce True o False. Quindi form.cleaned_data contiene i valori convertiti in Python, perciò cleaned_data["day"] è un datetime.date, non del testo:
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]Sfida
Facile- In
events/forms.py, scriviEventForm:titleeplacecome testo di massimo 100 caratteri,datecome data. - In
new_event, controlla il POST usando il modulo. Se è valido, crea l’evento a partire dai valori convertiti e reindirizza. In caso contrario, visualizza la pagina conerrorimpostato suPlease check the form.
Premi Run e invia il modulo senza una data.
Provalo tu
from django import forms
Tutte le lezioni di Form
Esercitati da solo: Playground Django