验证字典与模式
项目描述
Valedictory验证dict中的数据。它设计用于API验证,以及其他接收结构化JSON数据而不是键值POST表单数据的场景。它接受一个包含数据(可能来自JSON POST请求)的dict,并验证这些数据是否符合某些字段。
验证器定义为类。在Validator类上声明字段。一旦构建,Validator实例是不可变的。
from valedictory import Validator, fields, InvalidDataException
class PersonValidator(Validator):
name = fields.CharField()
height = fields.IntegerField()
date_of_birth = fields.DateField()
person_validator = PersonValidator()
可以使用Python dict来检查它是否符合此验证器。该dict可以来自JSON POST请求、配置文件或任何其他需要验证和清理的外部数据源。将返回清洗后的数据。Validator类将返回一个包含清洗数据的dict。每个字段类型可能在清洗过程中转换数据。例如,DateField将数据转换为datetime.date实例。
input_data = json.loads(request.body)
try:
# cleaned_data will be a dict of cleaned, validated data
cleaned_data = person_validator.clean(input_data)
# Do something with the returned data
Person.objects.create(**cleaned_data)
except InvalidDataException as errors:
# The data did not pass validation
for path, message in errors.flatten():
# This will print something like 'name: This field is required'
print("{0}: {1}".format('.'.join(path), message))
验证器可以嵌套,允许任意复杂性的dict
class ArticleValidator(Validator):
content = fields.CharField()
published = fields.DateTimeField()
author = fields.NestedValidator(PersonValidator())
tags = fields.ListField(fields.CharField())
# Some example data that would pass validation:
data = {
"content": "An interesting article",
"published": "2018-06-13T1:44:00+10:00",
"author": {
"name": "Alex Smith",
"height": 175,
"date_of_birth": "1990-03-26",
},
"tags": ["humour", "interesting", "clickbait"],
}
项目详情
关闭
valedictory-0.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 39406026bd9ef02f2fa075752e57901a6cf29d0609120f2ba5638539412fe092 |
|
MD5 | ddbf6ca4dcd793bff9fec3d9ca66bf9b |
|
BLAKE2b-256 | 1ef937448f23d3de4fa14d0fef040a3535aec81020be56a3cecea58e6b184ee4 |