Menu
CoddyTech

Verificare un campo

Fa parte della sezione Form del percorso Django di Coddy. Lezione 10 di 20.

Il modulo accetta eventi con data dell'anno scorso. Le regole integrate conoscono i tipi e i limiti, ma non il tuo sito. Una regola personalizzata per un singolo campo va inserita in un metodo il cui nome è clean_ più il 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 username

is_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 appare sotto di esso.

Il metodo deve return il valore: ciò che restituisce finisce in cleaned_data. Senza return, il valore diventa None.

challenge icon

Sfida

Facile

In EventForm, rifiuta una data precedente a oggi con il messaggio The date cannot be in the past. Una data di oggi va bene.

Premi Run e aggiungi un evento con data di ieri.

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

Esercitati da solo: Playground Django