我有一个只占kwargs
的课程。参数kwargs['content']
包含user
和theme
键:
> content = "{'user': 1, 'theme':'red'}"
> kwargs['content'] = content
> m = Message(**kwargs)
我需要一种灵活的方式来模拟kwargs['content']
中的内容并检查...
这是我尝试过的,但我觉得有更好的方法。
class Message(object):
def __init__(self, *args, **kwargs):
for field in self._hash_model():
if field not in kwargs['content']:
raise ValidationError('Missing % field'.format(field))
# check type
# turn to json
def _hash_model(self):
"""
My model of values that need to be in content
"""
model = {
'user': int,
'theme': str
}
return model
我正在使用Python 3.4。
答案 0 :(得分:1)
查看以下内容是否适合您。将__init__
更改为
def __init__(self, *args, **kwargs):
content = json.loads(kwargs["content"]) # assuming kwargs has "content" key
for key,val in self._hash_model().items():
field = content.get(key) # returns None if absent
if field and typeof(field) is val:
# go ahead
else:
raise SomeException
如果您认为合适,则将验证逻辑分解为方法。评论是否不起作用。