繁体   English   中英

Formencode和空值

[英]Formencode and empty values

我如何编写一个始终执行的自定义验证器,即使用户提交了空值或缺失值也是如此?

我尝试覆盖to_python,validate_python,_to_python,_validate_python(以及更多)方法,但是如果用户提交了空值或None值,这些方法似乎都无法运行

我发现我可以使用预验证器来做到这一点,但是我不确定这是否是最好的方法。 这样做的问题是,如果验证码失败,则没有其他任何验证。 我可以使用chained_validators而不是pre_validators,但这具有相反的效果,即只有在所有其他字段都通过的情况下才验证验证码。

class LoginForm(formencode.Schema):
    ...
    captcha = formencode.validators.String(if_missing=None)
    pre_validators = [validators.Captcha('captcha')]



class Captcha(formencode.validators.FormValidator):

    def __init__(self, captcha_name):
        self.captcha_name = captcha_name

    def validate_python(self, value_dict, state):
        if not captcha.test_captcha(value_dict.get(self.captcha_name)):
            raise formencode.Invalid('Captcha error', self.captcha_name, state, error_dict={self.captcha_name: 'Captcha did not match'})

我最终从FormEncode转移到WTForms,现在一切都变得很容易了。 在我看来,好像不是很好地考虑了Formencode。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM