Menu
CoddyTech

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

Sfida

Facile

Lascia che un modulo Django controlli il nuovo evento.

  1. In events/forms.py, scrivi EventForm: title e place come testo fino a 100 caratteri, date come data.
  2. In new_event, crea il modulo a partire da request.POST. Se è valido, crea l’evento a partire da form.cleaned_data e reindirizza alla pagina dell’evento. In caso contrario, imposta error su Please 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