TurboGears Widgetsのバリデーションについて

Widgetには、バリデーションが設定できます。こんな感じ。

class EditUserWidgets(widgets.WidgetsList):
    user_name = widgets.TextField(name="user_name", 
                                  label=u"ログイン名", 
                                  validator=validators.NotEmpty())
    display_name = widgets.TextField(name="display_name", 
                                     label=u"ユーザー名(表示用)", 
                                     validator=validators.NotEmpty())
    password = widgets.PasswordField(name="password", 
                                     label=u"パスワード")
    email_address = widgets.TextField(name="email_address", 
                                      label=u"メールアドレス", 
                                      validator=validators.Email(not_empty=True))
    modify = widgets.CheckBox(name="modify", 
                              label=u"利用者")
    id = widgets.HiddenField(name="id", 
                             validator=validators.Int())

validatorsにはデフォルトでいっぱい種類が用意されているので、これを使うだけで基本的なバリデーションはできてしまいます。名前だけリストアップするとこんな感じ。formencode/validators.py より。型名になってるのは、その型であることのバリデーションと同時に、型変換もしてくれます。

    • ConfirmType
    • Wrapper
    • Constant
    • MaxLength
    • MinLength
    • NotEmpty
    • Empty
    • Regex
    • PlainText
    • OneOf
    • DictConverter
    • IndexListConverter
    • DateValidator
    • Bool
    • Int
    • Number
    • String
    • UnicodeString
    • Set
    • Email
    • URL
    • StateProvince
    • PhoneNumber
    • FieldStorageUploadConverter
    • FileUploadKeeper
    • DateConverter
    • TimeConverter
    • PostalCode
    • StripField
    • StringBool
    • SignedString
    • FormValidator
    • RequireIfMissing
    • FieldsMatch
    • CreditCardValidator
    • CreditCardExpires
    • CreditCardSecurityCode

See: http://formencode.org/module-formencode.validators.html