簡體   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