验证器适配器。所有验证器的通用接口。
项目描述
VAA
VAlidators Adapter允许使用具有相同接口的任何现有验证器进行验证。
支持的验证器
validator | adapter |
---|---|
Cerberus | va.cerberus |
Django Forms | va.django |
Marshmallow | va.marshmallow |
PySchemes | va.pyschemes |
Django REST Framework | va.restframework |
WTForms | va.wtforms |
python3 -m pip install --user vaa
示例
import marshmallow
import vaa
@vaa.marshmallow
class Scheme(marshmallow.Schema):
id = marshmallow.fields.Int(required=True)
name = marshmallow.fields.Str(required=True)
验证数据
vaa采用的所有方案都具有相同的接口
validator = Scheme({'id': '1', 'name': 'Oleg'})
validator.is_valid() # True
validator.cleaned_data # {'name': 'Oleg', 'id': 1}
validator = Scheme({'id': 'no', 'name': 'Oleg'})
validator.is_valid() # False
validator.errors # [Error(message='Not a valid integer.', field='id')]
简单方案
如果您想使用简单函数进行验证,可以使用va.simple
适配器。例如,您想检查字典{'a': ..., 'b': ...}
中的两个值都是正数。有很多种方法可以做到这一点。
它可以返回bool
@vaa.simple
def validate(a, b) -> bool:
return a > 0 and b > 0
或者返回错误消息
@vaa.simple
def validate(a, b) -> bool:
if a > 0 and b > 0:
return True
return 'should be positive'
或者返回错误字典
@vaa.simple
def validate(a, b) -> bool:
if a <= 0:
return {'a': 'should be positive'}
if b <= 0:
return {'b': 'should be positive'}
return True
或者使用带有错误消息或字典的va.ValidationError
引发错误
@vaa.simple
def validate(a, b) -> bool:
if a > 0 and b > 0:
return True
raise vaa.ValidationError('should be positive')
另外,如果您想获取原始字典而无需将其解包为关键字参数,可以编写一个只接受一个_
参数的函数
@vaa.simple
def validate(_):
return _['a'] > 0 and _['b'] > 0
在该字典中,可以通过属性访问键
@vaa.simple
def validate(_):
return _.a > 0 and _.b > 0
选择最佳方式并遵循它。避免在一个项目中混合使用。
未知方案
如果您正在创建一个应该接受任何验证器而不需要显式使用vaa的库,请使用vaa.wrap
class Scheme(marshmallow.Schema):
id = marshmallow.fields.Int(required=True)
name = marshmallow.fields.Str(required=True)
validator = vaa.wrap(Scheme)({'id': 'no', 'name': 'Oleg'})
validator = Scheme({'id': 'no', 'name': 'Oleg'})
validator.is_valid() # False
validator.errors # [Error(message='Not a valid integer.', field='id')]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
vaa-0.2.1.tar.gz (8.1 kB 查看哈希值)
构建分布
vaa-0.2.1-py3-none-any.whl (8.2 kB 查看哈希值)
关闭
vaa-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55a4419d8b094aacffb82d748b09abe5ca35fe603675ebdab7571373e7d3bf8a |
|
MD5 | 3c16ee150c2cbde30ed0800f7bc5384a |
|
BLAKE2b-256 | e274369907e565282db1952aa70c244f425d6d158c1c096306e0552afaab5bfd |
关闭
vaa-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8f638e47e633739f5fb2912d36c5c01f7d757ce9f9508745dcae1eb0b8f1778f |
|
MD5 | 3114a5d875f19bbf9d2ab8e62d9d818a |
|
BLAKE2b-256 | 78902008188c9427f118587e038e2a00f4247c07acec09fc934b2addeda668f2 |