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