使用Colander验证可选值

时间:2015-09-21 16:01:11

标签: pyramid colander

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

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

此处,first_namelast_name是必需参数。如果我使用missing='',那么这将使它们成为可选项,但它们仍然会作为空字符串添加到反序列化中,如果用户提交空字符串,则该字符串无效。

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

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

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找missing=colander.drop 来自docs

  

colander.drop - 表示将从架构中删除的值   如果在反序列化期间丢失了。作为一个值传递给   缺少SchemaNode的关键字参数。