インストール
pipで。
$ pip install cerberus
サンプル
バリデーションの定義をdictで定義して、Validatorのコンストラクタに渡す。
from cerberus import Validator schema = { "url": {'required': True, 'type': 'string'}, "title": {'required': True, 'type': 'string'}, "links" : {'type': 'list', 'schema': {'type': 'string'}}, "imgs": {'type': 'list', 'schema': {'type': 'dict', \ 'schema': {'tag': {'type': 'string'}, 'url': {'type': 'string'}}}}, "pv": {'required': True, 'type': 'integer', 'min': 0} } validator = Validator(schema)
上から説明すると、
urlは必須項目。型はstring。
titleは必須項目。型はstring。
linksはオプション項目。型はstringのリスト。
imgsはオプション項目。型はtag, urlというキーをもつdictのリスト。ただし、tag、url共にstring。
pvは必須項目。型はinteger。最小値は0。
データを作ってバリデーションしてみる。
document = { "url": "http://example.com/validator/test.html", "links": ['http://example.com/test1.html', 'http://example.com/test2.html'], "imgs": [{'tag': 'pic1', 'url': 'img/pic1.png'}], "pv": 10 } if validator.validate(document): print ("success!") else: print ("fail!") print (validator.errors)
実行結果。
fail! {'title': 'required field'}
という風になかなか直感的で使い易い。 もちろん拡張して自前のバリデーション定義も作成できる。