Djangoフォーム
CoddyのDjangoジャーニー「フォーム」セクションの一部。レッスン 5/20。
日付を指定せずにフォームを送信すると、サイトがクラッシュします。Djangoは空のテキストを日付に変換できないためです。各フィールドを手作業で確認するには、すべてのフィールドとすべてのエラーに対するコードが必要になります。
Djangoのフォームでは、フィールドをforms.pyに一度記述すれば、各フィールドが受け付ける値を把握します。レストランの予約フォームは次のとおりです。
from django import forms
class BookingForm(forms.Form):
name = forms.CharField(max_length=50)
day = forms.DateField()
guests = forms.IntegerField()別の指定をしない限り、すべてのフィールドは必須です。また、CharFieldは最初に空白を取り除くため、空白だけの名前は空として扱われます。
ビューでは、受け取ったデータからフォームを作成し、is_valid()を呼び出します。これはすべてのフィールドを確認し、TrueまたはFalseを返します。次に、form.cleaned_dataにはPythonの型に変換された値が格納されるため、cleaned_data["day"]はテキストではなくdatetime.dateになります。
form = BookingForm(request.POST)
if form.is_valid():
day = form.cleaned_data["day"]チャレンジ
簡単Djangoフォームに新しいイベントを検証させましょう。
events/forms.pyでEventFormを記述します。titleとplaceは最大100文字のテキスト、dateは日付にします。new_eventでrequest.POSTからフォームを作成します。有効な場合はform.cleaned_dataからイベントを作成して、そのイベントにリダイレクトします。有効でない場合は、errorにPlease check the form.を設定します。
日付を入力せずにフォームを送信すると、Please check the form.と表示されます。
自分で試してみよう
from django import forms
フォームのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド