2011-03-31 166 views
4

我对WTForms validators.optional()有问题,因为如果字段为空(WTForms docs),它会停止验证链。这意味着验证不会继续使用自定义函数,这可能会导致类型错误。WTForms validators.optional:继续验证空字段?

代码示例:

class MyForm(form): 
    myfield = TextField('My Field', [validators.Optional()]) 

    def validate_myfield(form, field): 
     field.data = unicode(field.data) 

有什么办法或变通方法继续验证链即使可选内容是空的,也许使用custom validators

如果我以错误的方式接近问题,提示正确的方向将有所帮助!

+1

是否有一个原因,你不能只在可选的验证器列表中放置自定义验证器? (验证器按顺序评估) – dagoof 2011-04-01 14:10:46

+0

您的评论帮助,使其成为答案,以便我可以选择它。 – lecodesportif 2011-04-01 15:16:52

+1

出于兴趣,如果该字段为空,为什么还需要继续验证?通常情况下,只能用两种方式对空值作出反应,要么是错误(不是可选的),要么是不是错误(是可选的),而是以某种不变的方式处理它(因为值始终相同)。如果您遇到类型错误,您是否试图在验证器中执行某些并不属于该验证器的操作?我不熟悉WTForms,但显然你可以创建自定义字段,它也可以处理任何自定义分析需求。 – 2011-04-01 16:01:03

回答

4

您可以更改您的验证器列出的顺序。如果您的自定义验证器放置在可选验证器之前,它应该提供期望的效果,因为它们按顺序进行评估。