我正在Deform/Colander中实现一个简单的“勾选同意条款和条件框”。
所以,我只想勾选复选框,并有一个错误消息说“你必须同意T&C”。
我知道我可以使用:

colander.OneOf([True])

以确保该框被勾选。但是,其中一个不允许自定义错误消息。正确的方法是什么?

最佳答案

使用自定义验证器:

def t_and_c_validator(node, value):
    if not value:
        raise Invalid(node, 'You must agree to the T&C')

class MySchema(colander.Schema):
    t_and_c = colander.SchemaNode(
                  colander.Boolean(),
                  description='Terms and Conditions',
                  widget=deform.widget.CheckboxWidget(),
                  title='Terms and Conditions',
                  validator=t_and_c_validator,
                  )

10-07 13:01