我正在使用Colander来验证Pyramid 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
。
有没有办法将参数标记为真正可选?意思是,如果它们不在请求中,它们也不应该在反序列化的结果中。
答案 0 :(得分:2)
我认为你正在寻找missing=colander.drop
来自docs:
colander.drop - 表示将从架构中删除的值 如果在反序列化期间丢失了。作为一个值传递给 缺少SchemaNode的关键字参数。