使用 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_name
和last_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.
我正在使用 Colander 验证 Pyramid 网络服务器的请求参数。例如:
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 - 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.