Menu
CoddyTech

Bir Django Formu

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

Formu tarih olmadan gönderin, site çöker: Django boş metni tarihe dönüştüremez. Her alanı elle 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ı temizler; 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() yöntemini çağırın: bu yöntem her alanı kontrol eder ve True veya False döndürür. Ardından form.cleaned_data, Python'a dönüştürülmüş değerleri içerir; dolayısıyla cleaned_data["day"] metin değil, bir datetime.date değeridir:

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

Görev

Kolay
  • events/forms.py içinde EventForm yaz: title ve place en fazla 100 karakterlik metin, date ise tarih olsun.
  • new_event içinde POST isteğini bununla doğrula. Geçerliyse dönüştürülmüş değerlerden etkinliği oluştur ve yönlendir. Geçerli değilse error değeri Please check the form. olacak şekilde sayfayı görüntüle.

Run'a bas ve formu tarih girmeden gönder.

Kendin dene

from django import forms

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

Kendi başına pratik yap: Django playground