組み込みのバリデーション
CoddyのDjangoジャーニー「フォーム」セクションの一部。レッスン 9/20。
イベントには説明と定員が必要です。各フォームフィールドはそれぞれの種類の値をチェックし、引数でルールを追加します。これまでに2つ学びました。すべてのフィールドは必須であり、max_length=100は100文字を超えるタイトルを拒否します。
IntegerFieldのmin_value:より小さい数値を拒否します。- 任意のフィールドの
required=False:空欄のままにできます。
ウィジェットはフィールドの表示方法を決めます。widget=forms.Textareaを指定すると、大きなテキストボックスになります。ボードゲームの予約フォーム:
class TableForm(forms.Form):
players = forms.IntegerField(min_value=2)
wishes = forms.CharField(widget=forms.Textarea, max_length=500)
phone = forms.CharField(required=False)任意のテキストフィールドが空欄の場合、cleaned_dataには""が入ります。任意の数値フィールドが空欄の場合はNoneが入ります。テンプレートのループは変更なしで新しいフィールドを描画します。
チャレンジ
簡単イベントに説明と定員を追加します。
events/forms.pyで、EventFormにdescriptionを追加します。大きな入力欄に入力するテキストで、空欄のままでもかまいません。capacityも追加します。1以上の整数です。new_eventで、両方をイベントに保存します。
定員を25人、説明なしでイベントを追加すると、そのページには定員25人と表示されます。
自分で試してみよう
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
フォームのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド