Menu
CoddyTech

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"]
challenge icon

Sfida

Facile
  • In events/forms.py, scrivi EventForm: title e place come testo di massimo 100 caratteri, date come 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 con error impostato su Please 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