Menu
CoddyTech

Tek Bir Alanı Denetleme

Coddy'nin Django Journey'sinin Formlar bölümünün bir parçası. Ders 10 / 20.

Form, geçen yılın tarihini taşıyan etkinlikleri kabul eder. Yerleşik kurallar türleri ve sınırları bilir, sitenizi değil. Tek bir alanla ilgili kendi kuralınız, alanın adının başına clean_ eklenerek adlandırılan bir metoda yazılır. Personel için admin adını saklı tutan bir kayıt formu:

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(), alanın kendi kontrollerinden sonra bu metodu çağırır; bu nedenle değer zaten dönüştürülmüştür: bir DateField tarih verir. forms.ValidationError yükseltmek alanı reddeder ve mesaj alanın altında görünür.

Metot değeri return etmelidir: döndürdüğü değer cleaned_data içine yerleşir. return olmadan değer None olur.

challenge icon

Görev

Kolay

EventForm içinde, bugünden önceki bir tarihi The date cannot be in the past. mesajıyla reddet. Bugünün tarihindeki bir etkinlik kabul edilir.

Çalıştır'a bas ve tarihi dün olan bir etkinlik ekle.

Kendin dene

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)

Formlar bölümündeki tüm dersler

Kendi başına pratik yap: Django playground