![](/img/trans.png)
[英]My formencode.variabledecode is returning an empty list - Pylons
[英]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.