Menu
CoddyTech

Formularz Django

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

Wyślij formularz bez daty, a strona ulegnie awarii: Django nie może zamienić pustego tekstu na datę. Ręczne sprawdzanie każdego pola wymagałoby kodu dla każdego pola i każdego błędu.

Formularz Django opisuje pola raz, w pliku forms.py, a każde pole wie, jakie wartości akceptuje. Formularz rezerwacji w restauracji:

from django import forms


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

Każde pole jest wymagane, chyba że określisz inaczej, a pole CharField najpierw usuwa spacje, więc nazwa składająca się wyłącznie ze spacji jest uznawana za pustą.

W widoku utwórz formularz z otrzymanych danych i wywołaj is_valid(): sprawdza on każde pole i zwraca True lub False. Następnie form.cleaned_data zawiera wartości przekonwertowane na typy Pythona, więc cleaned_data["day"] ma typ datetime.date, a nie tekstowy:

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

Wyzwanie

Łatwy
  • W events/forms.py napisz EventForm: title i place jako tekst o długości nie większej niż 100 znaków, a date jako datę.
  • W new_event sprawdź za jego pomocą POST. Jeśli formularz jest prawidłowy, utwórz wydarzenie na podstawie przekonwertowanych wartości i przekieruj. Jeśli nie, wyświetl stronę z error ustawionym na Please check the form.

Kliknij Uruchom i wyślij formularz bez daty.

Spróbuj swoich sił

from django import forms

Wszystkie lekcje w sekcji Formularze

Poćwicz samodzielnie: Edytor online Django