我正在使用Colander来验证金字塔Web服务器的请求参数。例如:
class MySchema(colander.MappingSchema):
first_name = colander.SchemaNode(colander.String())
last_name = colander.SchemaNode(colander.String())
此处,first_name
和last_name
是必需参数。如果我使用missing=''
,那么这将使它们成为可选的,但它们仍将作为空字符串添加到反序列化中,如果用户提交一个空字符串,这实际上没有用。
我所能想到的最好是missing=None
,然后稍后检查None
。
是否有一种方法可以将参数标记为真正可选的?意思是,如果它们不在请求中,那么它们也不应该在反序列化结果中。
我认为您正在寻找missing=colander.drop
。从docs:
colander.drop-表示将从架构中删除的值如果在反序列化过程中缺少它。作为值传递给SchemaNode缺少关键字参数。