組み込みのバリデーション
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が入ります。テンプレートのループは、変更を加えなくても新しいフィールドを描画します。
チャレンジ
簡単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)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
フォームのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド