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"]Wyzwanie
Łatwy- W
events/forms.pynapiszEventForm:titleiplacejako tekst o długości nie większej niż 100 znaków, adatejako datę. - W
new_eventsprawdź 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ę zerrorustawionym naPlease 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