我正在使用棉花糖来验证模式的一些字段。
class PlantDetailsSchema(Schema):
name: fields.Str(required=True, validate=validate.Length(min=3)),
sprout-time: fields.Str(required=True, validate=validate.Length(min=3)),
full-growth: fields.Str(required=True, validate=validate.Length(min=5)),
edible: fields.Bool(required=True)
class PlantInfoSchema(Schema):
plant = fields.Nested(PlantDetailsSchema)
num = fields.Int(required=True, validate=validate.Range(min=1))
def validate_json(json):
try:
schema = PlantInfoSchema().load(json)
ret = schema.dump()
return ret
except ValidationError:
return None
要验证的json元素是:json={'植物':{'名称':'盆景','发芽时间':'3个月','完全生长':'2年','可食用':假},'数量':3}
我的问题是如何验证名称中间包含破折号的字段(如"sprout-time"one_answers"fullgrowth"。你有解决这个问题的想法吗?
您可以使用"data_key"属性来指定带破折号的密钥名称。将字段名称定义为有效的东西,如"sprout_time"(可以是任何东西(和data_key,作为实际名称为">sprout_time"的字段的属性。
class PlantDetailsSchema(Schema):
name = fields.Str(required=True, validate=validate.Length(min=3))
sprout_time = fields.Str(
data_key='sprout-time',
required=True, validate=validate.Length(min=3)
)
full_growth = fields.Str(
data_key='full-growth',
required=True,
validate=validate.Length(min=5)
)
edible = fields.Bool(required=True)