Menu
CoddyTech

Bir Django Formu

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

Tarihsiz formu gönderdiğinizde site çöker: Django boş metni tarihe dönüştüremez. Her alanı tek tek kontrol etmek, her alan ve her hata için kod yazmayı gerektirirdi.

Django formu, alanları forms.py dosyasında bir kez tanımlar ve her alan neyi kabul ettiğini bilir. Bir restoranın rezervasyon formu:

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

Aksini belirtmediğiniz sürece her alan zorunludur ve CharField önce boşlukları kaldırır; bu nedenle yalnızca boşluklardan oluşan bir ad, boş kabul edilir.

Görünümde, gelen verilerden formu oluşturun ve is_valid() metodunu çağırın: bu metot her alanı kontrol eder ve True veya False döndürür. Ardından form.cleaned_data, Python türlerine dönüştürülmüş değerleri içerir; dolayısıyla cleaned_data["day"] metin değil, bir datetime.date nesnesidir:

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

Görev

Kolay

Yeni etkinliği bir Django formuna doğrulat.

  1. events/forms.py içinde EventForm yaz: title ve place en fazla 100 karakterlik metin, date ise tarih olsun.
  2. new_event içinde formu request.POST verisinden oluştur. Geçerliyse etkinliği form.cleaned_data verisinden oluştur ve etkinliğe yönlendir. Geçerli değilse error değerini Please check the form. olarak ayarla.

Formu tarih olmadan gönder: Please check the form. mesajını görürsün.

Kendin dene

from django import forms

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

Kendi başına pratik yap: Django playground