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 traktowana jako pusta.
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 obiekty Pythona, więc cleaned_data["day"] jest typu datetime.date, a nie tekstem:
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]Wyzwanie
ŁatwyPozwól, aby formularz Django sprawdził nowe wydarzenie.
- W pliku
events/forms.pynapiszEventForm:titleiplacejako tekst o długości do 100 znaków, adatejako datę. - W
new_eventutwórz formularz na podstawierequest.POST. Jeśli jest poprawny, utwórz wydarzenie na podstawieform.cleaned_datai przekieruj do niego. Jeśli nie, ustawerrornaPlease check the form.
Wyślij formularz bez daty: zobaczysz Please check the form.
Spróbuj swoich sił
from django import forms
Wszystkie lekcje w sekcji Formularze
Poćwicz samodzielnie: Edytor online Django