验证库
项目描述
Procrustes是一个验证库,适用于验证用户输入数据,例如Web表单或API调用。使用procrustes可以验证任何结构。
为此,procrustes有三个容器类 - Tuple、List和Dict。Tuple来自FP,具有固定数量的元素和固定类型。List可以包含任意数量的同类型值。Dict是一个字典。
Procrustes由验证器和表单组成。您可以使用验证器而不使用表单功能。表单主要添加小部件和表单数据解析。
验证器
您可以用procrustes做的最简单的事情是构建验证器并使用它
>>> from procrustes import validators as v >>> two_strings_v = v.Tuple(v.String(), v.String()) >>> auth = two_strings_v(['login', 'password']) >>> auth.data ('login', 'password') >>> auth.errors [] >>> auth = two_strings_v(['login']) >>> auth.data >>> auth.errors ['Must be iterable of length 2']
我们拥有非常强大的List
>>> list_of_pairs_v = v.List(two_strings_v) >>> pairs = list_of_pairs_v([(str(x), str(x)) for x in xrange(10)]) >>> pairs.data [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9')] >>> pairs.errors []
List、Tuple和Dict是递归的,因此您可以构建任何所需的数据结构。
Dict示例
>>> dict_v = v.Dict({'pair': two_strings_v, 'pairs': list_of_pairs_v}) >>> data = dict_v({'pair': ['a', 'b'], 'pairs': [['a', 'b'], ['c', 'd']]}) >>> data.data {'pair': ('a', 'b'), 'pairs': [('a', 'b'), ('c', 'd')]} >>> data.errors []
验证器具有required关键字参数
>>> two_strings_v = v.Tuple(v.String(), v.String(), required=False) >>> dict_v = v.Dict({'pair': two_strings_v, 'pairs': list_of_pairs_v}) >>> data = dict_v({'pairs': [['a', 'b'], ['c', 'd']]}) >>> data.data {'pair': None, 'pairs': [('a', 'b'), ('c', 'd')]} >>> data.errors []
扁平化
Procrustes可以扁平化数据
>>> list(data.flatten()) [('pairs__0__0', 'a'), ('pairs__0__1', 'b'), ('pairs__1__0', 'c'), ('pairs__1__1', 'd')]
并将其还原
>>> dict_v.deepen(dict([('pairs__0__0', 'a'), ('pairs__0__1', 'b'), ('pairs__1__0', 'c'), ('pairs__1__1', 'd')])) {'pair': (None, None), 'pairs': [('c', 'd'), ('a', 'b')]}
表单
表单是从验证器派生出来的,并作为混入实现。每个字段都可以作为表单使用。您的表单可能只包含一个forms.String。除了验证器,表单还添加了方法widgets、template_widgets、unflat和is_valid。
项目详情
关闭
procrustes-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6c0dd8a0f871d3523a4de0c89ea03054b837ef2a30c91dc05ceab4fc1d282657 |
|
MD5 | d55cc06074d286d298f2621dd74316f5 |
|
BLAKE2b-256 | cc6a27c922e36e81616fedfe6f66b77b800639148b26dd18ada15e0b63872731 |