Turbogears-validation

提供:Dev Guides
移動先:案内検索

TurboGears –検証

優れたフォームウィジェットライブラリには、入力検証機能が必要です。 たとえば、ユーザーは、検証のために他のプログラム手段(JavaScript関数など)に頼ることなく、必須フィールドにデータを入力するか、電子メールフィールドに有効な電子メールが含まれているかどうかを確認する必要があります。

ToscaWidgets Forms Libraryの初期バージョンは、検証サポートのためにFormEncodeモジュールに依存していました。 ToscaWidgets2には、tw2.coreモジュールで利用可能なビルトイン検証サポートがあります。 ただし、FormEncode検証手法を使用することは引き続き可能です。

ToscaWidgetsフォームを検証するために、@ validateデコレーターが使用されます。

@validate(form, error_handler, validators)
  • 'form' は、検証するToscaWidgetsフォームオブジェクトです。
  • 'error-handler' は、フォームエラーの処理に使用されるコントローラーメソッドです。
  • 'validators' は、FormEncodeバリデーターを含む辞書オブジェクトです。

バリデーターの種類

tw2.coreモジュールには、他のバリデーターが継承されるバリデータークラスが含まれています。 また、それに基づいてカスタムバリデーターを設計することもできます。 重要なバリデータのいくつかを以下に説明します-

*LengthValidator* -値に規定の長さがあるかどうかを確認します。 最小および最大制限は、minおよびmaxパラメーターで定義されます。 minshortおよびmaxongパラメータの長さの上下にあるカスタムメッセージを指定できます。
tw2.core.LengthValidator(min = minval, max = maxval,
   msgs = { 'tooshort': (‘message for short length’),
   'toolong': (‘message for long length)})
*RangeValidator* -通常、RangeFieldとともに使用されます。 最小および最大制限内の数値フィールドの値を検証すると便利です。 tooshortおよびtoolongパラメーターのメッセージはカスタマイズできます。
tw2.core.RangeValidator(min = minval, max = maxval,
   msgs = { 'tooshort': (‘message for short length’),
   'toolong': (‘message for long length)})
*IntValidator* -このクラスはRangeValidatorから派生しています。 これは通常、通常のテキストフィールドへの入力に整数データが​​含まれているかどうかを検証するために使用されます。 最小制限と最大制限、およびエラーメッセージを設定できます。 さらに、非整数入力のエラーメッセージは「notint」パラメーターとして指定できます。
tw2.core.IntValidator(msgs = {‘notint’:’Must be Integer’})
*OneOfValidator* -このバリデーターは、リスト内の利用可能なオプションからのみ値を選択するようユーザーに強制します。
tw2.core.OneOfValidator(values = [option1, option2,..],
   msgs = {‘notinlist’:’Not in List’}}
*DateValidator* -ユーザー入力が有効な日付であることを確認するのに非常に便利です。 日付形式(デフォルトはY-M-D)およびエラーメッセージはカスタマイズ可能です。 最小および最大の日付制限も指定できます。 DateTimeValidatorは、DateTimeクラスのオブジェクトを検証するためにも使用できます。
tw2.core.DateValidator(msgs = {format = ’%Y-%m-%d’,
   'baddatetime': ('baddate', ('Must follow date format $format_str'))}
*EmailValidator* -有効なメールアドレスに対してユーザー入力を検証します。 このクラスは、より一般的なRegexValidatorから継承されます。
tw2.core.EmailValidator(msgs = {'badregex': ('bademail',
   ('Must be a valid email address')) }
*UrlValidator* -このクラスはRegexValidatorからも継承されます。 有効なURLのユーザー入力を検証します。
tw2.core.UrlValidator(msgs = {'badregex': ('badurl', ('Must be a valid URL’)) }
*MatchValidator* -1つのフィールドの値が他のフィールドと一致するかどうかを確認します。 これは、ユーザーがパスワードフィールドを選択して確認する必要がある場合に特に便利です。 MatchValidatorの一般的な使用法を以下に示します-
import tw2.core as twc
import tw2.forms as twf

  class AdmissionForm(twf.Form):
      class child(twf.TableLayout):
         validator = twc.MatchValidator('pw', 'pwconfirm')
         pw = twf.PasswordField()
         pwconfirm = twf.PasswordField()

いずれかのチェックに合格した場合、検証が成功することが望まれる複合バリデーターを構築することもできます。 その他の場合、入力がすべてのチェックに合格した場合にのみ、検証を成功させることができます。 このため、tw2.coreはAnyおよびAllバリデーターを提供します。これらは、拡張可能なCompoundValidatorのサブクラスです。