跳转到主要内容

验证器适配器。所有验证器的通用接口。

项目描述

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 查看哈希值)

上传时间 Python 3