python使用schema库进行数据校验

以前做数据校验的时候,用的更多的是Flask-Wtf 或者是自己手写装饰器, 今个发现一个好库,强大又简便。


from jsonschema import validate

schema = {
    "type" : "object",
    "properties" : {
        "price" : {"type" : "number"},
        "name" : {"type" : "string"},
        "list":{"maxItems":2},
        "address":{'regex':'bj'},
    },
}

validate({"name" : "Eggs", "price" : 34.99,'list':[1,5],'address':'bj-jiuxianqiao'}, schema)


validate([2, 3, 4], {"maxItems" : 2})                                




from jsonschema import Draft4Validator

schema = {
    "$schema": "http://json-schema.org/schema#"

    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "email": {"type": "string"},
    }
    "required": ["email"],
}
Draft4Validator.check_schema(schema)

可以针对一个数据,做多个判断。 

{
	"title": "Example Schema",
	"type": "object",
	"properties": {
		"firstName": {
			"type": "string"
		},
		"lastName": {
			"type": "string"
		},
		"age": {
			"description": "Age in years",
			"type": "integer",
			"minimum": 0
		}
	},
	"required": ["firstName", "lastName"]
}

针对list的长短也是可以进行判断,可以设置最大最少,想看更多的demo大家去官网去瞅瞅吧。   

"tags": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
        }

当然还有一些现成的format,比如uri,datetime,hostname,ipv4等等。 



大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

3 Responses

  1. duma 2016年4月3日 / 上午9:54

    请问这个可以返回中文的提示信息吗?

    • 峰云就她了 2016年4月4日 / 下午4:43

      没有… …. 这玩意只是个模型而已,需要你自己再填充下.

  2. orangleliu 2014年10月31日 / 下午5:05

    这个也有啊,跟我们这的一个框架看起来一个样子。。

发表评论

邮箱地址不会被公开。 必填项已用*标注