ドキュメントから、カスタム ルールとカスタム バリデーターの使用例の違いが明確ではありません。ドキュメントに記載されている例では、唯一の違いは、カスタム ルールの値をチェックする追加のif
ステートメントです。is_odd
どのような場合にカスタム ルールを使用し、いつカスタム バリデーターを使用する必要がありますか?
カスタム ルール
schema = {'amount': {'isodd': True, 'type': 'integer'}}
from cerberus import Validator
class MyValidator(Validator):
def _validate_isodd(self, isodd, field, value):
""" Test the oddity of a value.
The rule's arguments are validated against this schema:
{'type': 'boolean'}
"""
if isodd and not bool(value & 1):
self._error(field, "Must be an odd number")
カスタムバリデーター
from cerberus import Validator
schema = {'amount': {'validator': 'oddity'}}
class AValidator(Validator):
def _validator_oddity(self, field, value):
if value & 1:
self._error(field, "Must be an odd number")