使用 Colander 验证可选值

Validate optional values with Colander

我正在使用 Colander 验证 Pyramid 网络服务器的请求参数。例如:

class MySchema(colander.MappingSchema):                                         
    first_name = colander.SchemaNode(colander.String())                               
    last_name = colander.SchemaNode(colander.String())                              

这里,first_namelast_name是必须的参数。如果我使用 missing='' 那么这将使它们成为可选的,但它们仍将作为空字符串添加到反序列化中,如果用户提交空字符串,这并不是很有用。

我能想到的最好的是 missing=None,稍后检查 None

有没有办法将参数标记为真正可选的?意思是,如果它们不在请求中,它们也不应该在反序列化结果中。

我想你正在寻找 missing=colander.drop
来自 docs:

colander.drop - Represents a value that will be dropped from the schema if it is missing during deserialization. Passed as a value to the missing keyword argument of SchemaNode.