2011-03-31 162 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

您可以更改您的驗證器列出的順序。如果您的自定義驗證器放置在可選驗證器之前,它應該提供期望的效果,因爲它們按順序進行評估。