我使用colander来验证(并反序列化json数据)某些web服务的输入。
我想在冒号模式中添加一个规则来捕获一个空列表,但是我不知道如何去做。
现在我有了下面的示例,演示用两组不同的数据调用函数f()。因为空的colander.Invalid列表,我希望后者触发events异常
import colander
def f(data):
class EventList(colander.SequenceSchema):
list_item = colander.SchemaNode(colander.Int())
class Schema(colander.MappingSchema):
txt = colander.SchemaNode(colander.String())
user = colander.SchemaNode(colander.String())
events = EventList()
try:
good_data = Schema().deserialize(data)
print 'looks good'
except colander.Invalid as e:
print "man, your data suck"
good_data = {'txt' : 'BINGO',
'user' : 'mogul',
'events' : [11, 22, 33]}
f(good_data)
bad_data = {'txt' : 'BOOM',
'user' : 'mogul',
'events' : []}
f(bad_data)有什么建议吗?
发布于 2013-09-13 03:06:06
您试过使用colander.Length验证器吗?
尝试使用以下方法修改架构:
events = EventList(validator=colander.Length(min=1))对于bad_data,这应该会引发:
Invalid: {'events': u'Shorter than minimum length 1'}https://stackoverflow.com/questions/18632562
复制相似问题