跳转到主要内容

wr-schemas

项目描述

一个模式描述

  1. 一种数据结构

  2. 一种将一种数据结构映射到另一种数据结构的方式

一个模式由一系列字段组成。

字段没有类型 – 它本身就是一种类型。与类型不同,字段具有双向映射。给定两个不同的数据结构 xy,映射描述了如何从 y.f 计算出 x.f,以及如何从 x.f 计算出 y.f

字段支持以下属性

  • 名称

  • 映射

  • 默认值

  • 源名称 (source_names)

  • 最小长度,最大长度,自动截断

  • 最小值,最大值

  • 选择项

  • 正则表达式

  • 必需,禁止

  • 可空

此外

  • 支持嵌套字段。

  • 字段易于克隆以重复使用。

  • 字段和模式易于反转。

  • 模式易于链接。

from wr_schemas import Field, Schema, Mappings


class Fields:
    user_id = Field('id', mapping=int, min=1)
    user_username = Field('username', min_len=5, max_len=100, regex=r'^[a-zA-Z0-9_\-\.@]+$')
    user_password = Field('password', min_len=10, max_len=100, regex=r'^[a-zA-Z0-9]+$')
    user_dob = Field('date_of_birth', mapping=Mappings.date())


CreateUser = Schema(
    Fields.user_username.clone(required=True),
    Fields.user_password.clone(default=None),
    Fields.user_dob.clone(default=None),
)

payload = CreateUser.load({'username': 'marcus.aurelius@rome.gov'})
assert payload.username == 'marcus.aurelius@rome.gov'
assert payload.password is None
assert payload.date_of_birth is None

print(CreateUser.dump(payload))

Flask

from wr_schemas import Field, Schema, Mappings
from wr_schemas.flask_request import FlaskRequestSchemaMixin

CreateUser = Schema(
    Field('username', required=True),
    Field('password', required=True),
    mixins=[FlaskRequestSchemaMixin],
)
user = CreateUser.from_request()

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

wr-schemas-0.5.0.tar.gz (10.0 kB 查看哈希值)

上传于 源代码

由以下支持