跳转到主要内容

验证库

项目描述

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
[]

ListTupleDict是递归的,因此您可以构建任何所需的数据结构。

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。除了验证器,表单还添加了方法widgetstemplate_widgetsunflatis_valid

项目详情


下载文件

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

源代码分发

procrustes-0.2.1.tar.gz (6.4 kB 查看哈希值)

上传时间 源代码

由以下机构支持