2011-06-18 71 views
1

蹊蹺wtforms字段列表& &驗證... 應該說,現場必須有int值,而不是此字段是必需 爲什麼f.data有[無,2,無]值,而不是['def',2,'abc']?蹊蹺wtforms FieldList中&&驗證

from webob.multidict import MultiDict 

from wtforms import Form 
from wtforms import FieldList, IntegerField 
from wtforms import validators 

class SearchForm(Form): 
    locality_id = FieldList(IntegerField(u'Locality', [validators.Required()])) 


d = MultiDict([('locality_id-0', 'def'), ('locality_id-1', 2), ('locality_id-2', 'abc')]) 

f = SearchForm(d) 

print f.validate() 
print f.errors 
print f.data 
print f.locality_id.data 

%蟒form_test.py

{ 'locality_id':[[u'This需要字段 '],[u'This字段是必需的']]}

{ 'locality_id':[無,2,無]}

[無,2,無]

回答

1

它看起來像有一個try... except阻止位於IntegerField祖先中,它將把所有非整數放入process_errors屬性中,並且該類特別禁止讓您使用除有效數據之外的任何內容填充數據。不過,我相信你仍然可以在raw_data屬性中獲得所需的值。

+0

' 類IntegerField(TextField的): ... DEF process_formdata(個體,值列表): 如果值列表: 嘗試: self.data = INT(值列表[0]) 除了ValueError異常: 加註ValueError異常(self.gettext(u'Not有效的整數值 ')) ' 我不能明白爲什麼我沒有收到‘不是一個有效的整數值’例外 從process_formdata()?爲什麼我要'這個字段是必需的'。 ? – sector119

+0

錯誤在課堂中被捕獲。 – cwallenpoole

+0

你能告訴我錯誤在IntegerField中被捕獲嗎? – sector119