Pylons 0.9.7 validate でフィールド一致チェックと独自検証ルール



メールアドレスやパスワードなど、同じ文字列を
2回入力してもらい、一致しているか検証を
行ないたい場合があります。

そういう場合には、こんな形でルールを記載すれば
一致検証を行なうことができます。

chained_validators = [formencode.validators.FieldsMatch('document', 'document2')]


FieldsMatchルールが一致検証を行ないます。
入力された文字列が一致しない場合、
後の方(この場合だとdocument2)に「項目が一致しません」というエラーが
表示されます。

また、このルールは複数まとめて宣言可能です。

chained_validators = [
    validators.FieldsMatch('password',
    'password_confirm'),
    validators.FieldsMatch('email',
    'email_confirm')]




独自に検証ルールを作成したい場合には


class SecurePassword(formencode.FancyValidator):
    words_filename = '/usr/share/dict/words'
    def _to_python(self, value, state):
        f = open(self.words_filename)
        lower = value.strip().lower()
        for line in f:
            if line.strip().lower() == lower:
                raise formencode.Invalid(
                    u'もっと複雑なパスワードにしてください', value, state)
        return value


こんなクラスを作ります。

検証ルールとして、

document = SecurePassword(not_empty=True)


としてやると、/usr/share/dict/wordsに含まれている単語が入力された場合
「もっと複雑なパスワードにしてください」というエラーが表示されます。


【参考URL】
http://www.formencode.org/Validator.html



もどる