Как сделать простую проверку значения с сообщением об ошибке в Deform/Colander

Я реализую простую «галочку, чтобы согласиться с условиями» в Deform/Colander.

Итак, я просто хочу проверить, что флажок установлен, и получить сообщение об ошибке, в котором говорится: «Вы должны согласиться с T&C».

Я понимаю, что могу использовать:

colander.OneOf([True]) 

чтобы убедиться, что флажок установлен. Однако OneOf не позволяет создавать собственные сообщения об ошибках. Каким будет правильный способ сделать это?


person somewhatoff    schedule 21.07.2011    source источник


Ответы (1)


Используйте пользовательский валидатор:

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,
                  )
person Chris McDonough    schedule 21.07.2011
comment
Спасибо, Крис, это работает хорошо. Я полагаю, что в будущем выпуске, возможно, стоит рассмотреть ключевое слово msg = «Пользовательское сообщение» для валидатора OneOf, если это не вызовет проблем. - person somewhatoff; 23.07.2011