Menu
CoddyTech

組み込みのバリデーション

CoddyのDjangoジャーニー「フォーム」セクションの一部。レッスン 9/20。

イベントには説明と定員が必要です。各フォームフィールドは、それぞれの種類の値を検証し、引数でルールを追加します。すでに2つ学びました。すべてのフィールドは必須であり、max_length=100は100文字を超えるタイトルを拒否します。

  • forms.IntegerField(min_value=1, max_value=5):最小値から最大値までの整数。
  • forms.EmailField():メールアドレスではないテキストを拒否します。
  • 任意のフィールドに指定するrequired=False:空欄のままにできます。

ウィジェットはフィールドの表示方法を決めます。widget=forms.Textareaを指定すると、大きなテキストボックスになります。商品レビュー用のフォーム:

class ReviewForm(forms.Form):
    stars = forms.IntegerField(min_value=1, max_value=5)
    comment = forms.CharField(widget=forms.Textarea, max_length=500)
    nickname = forms.CharField(required=False)

任意のテキストフィールドが空の場合、cleaned_dataには""が入ります。任意の数値フィールドが空の場合はNoneが入ります。テンプレートのループは、変更を加えなくても新しいフィールドを描画します。

challenge icon

チャレンジ

簡単

EventFormに2つのフィールドを追加します。

  • description:大きなボックスに入力するテキストで、空欄のままでもかまいません。
  • capacity:1以上の整数です。

new_eventで、両方の値をイベントに保存します。Runを押して、/events/new/を開きます。

自分で試してみよう

from django import forms


class EventForm(forms.Form):
    title = forms.CharField(max_length=100)
    date = forms.DateField()
    place = forms.CharField(max_length=100)
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

フォームのすべてのレッスン

自分で練習してみよう: Djangoプレイグラウンド