我有一个类似于name
的数据结构
任意字符串,不能是特定值(src
)
{
'name' : 'stringvalue',
'src' : 'who cares this is wrong'
}
我希望cerberus检查密钥是否只是src
或alsoBad
,但我看到的所有模式示例似乎都要求我指定给定名称的格式。
我试过这个:
def check_data(type_data):
val = cerberus.Validator()
val.allow_unknown={'forbidden' : ['src','alsoBad']}
val.validate(type_data,{})
认为空架构会导致allow_unknown
开始工作。但这没有发现问题。
然后我尝试了:
def check_data(type_data):
val = cerberus.Validator()
val.allow_unknown=
val.validate(type_data,{'any_field':{'forbidden' : ['src','alsoBad']}})
但这也未能解决问题。
如果dict中的第一级键可以是什么的话,我该怎么检查?
答案 0 :(得分:0)
我已经用代码进行了抨击并完成了它:
def check_data(type_data):
bad_field=set(['src','alsoBad']) & set(type_data.keys())
if bad_field:
raise ValueError(f'Cannot have field {bad_field}'