检查Cerberus中的根密钥

时间:2018-04-04 18:55:02

标签: python cerberus

我有一个类似于name的数据结构 任意字符串,不能是特定值(src

 {
  'name' : 'stringvalue',
  'src'  : 'who cares this is wrong'
 }

我希望cerberus检查密钥是否只是srcalsoBad,但我看到的所有模式示例似乎都要求我指定给定名称的格式。

我试过这个:

 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中的第一级键可以是什么的话,我该怎么检查?

1 个答案:

答案 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}'