![](/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.