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 usernameis_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.
Görev
KolayEventForm 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
2Django Formları
Bir Django FormuForm ÇizimiKendi başına pratik yap: Django playground