Menu
CoddyTech

Sprawdzanie jednego pola

Część sekcji Formularze ścieżki Django w Coddy. Lekcja 10 z 20.

Tablica przyjmuje wydarzenia z datą z zeszłego roku. Wbudowane reguły znają typy i ograniczenia, ale nie znają Twojej witryny. Własną regułę dotyczącą jednego pola umieszcza się w metodzie o nazwie clean_ plus nazwa pola. Formularz rejestracyjny, który rezerwuje nazwę admin dla personelu:

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() wywołuje tę metodę po własnych sprawdzeniach pola, więc wartość jest już przekonwertowana: DateField zwraca datę. Zgłoszenie forms.ValidationError odrzuca pole, a komunikat pojawia się pod nim.

Metoda musi return wartość: to, co zwraca, trafia do cleaned_data. Bez return wartością staje się None.

challenge icon

Wyzwanie

Łatwy

W EventForm odrzuć datę wcześniejszą niż dzisiejsza, wyświetlając komunikat The date cannot be in the past. Dzisiejsza data wydarzenia jest dozwolona.

Naciśnij Run i dodaj wydarzenie z datą wczorajszą.

Spróbuj swoich sił

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)

Wszystkie lekcje w sekcji Formularze

Poćwicz samodzielnie: Edytor online Django