wtforms中的FieldList和验证问题
关于wtforms的FieldList和验证的问题……
应该提示说这个字段必须是整数值,而不是“这个字段是必填的”。
为什么f.data的值是[None, 2, None],而不是['def', 2, 'abc']呢?
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
% python form_test.py
False
{'locality_id': [[u'这个字段是必填的。'], [u'这个字段是必填的。']]}
{'locality_id': [None, 2, None]}
[None, 2, None]
1 个回答
1
看起来在 IntegerField
的继承结构中,有一个 try... except
的代码块,这个代码块会把所有不是整数的值放到 process_errors
这个属性里。而这个类特别不允许你用无效的数据来填充。尽管如此,我相信你还是可以在 raw_data
这个属性中找到你想要的值。