一个模仿django表单的python数据契约系统。

pycontract的Python项目详细描述


python的声明性数据协定容器类型

pycontracts当前是内部alpha,尚未准备好供生产使用。

python数据契约(pypi中的pycontracts)是用于在 系统。它松散地基于django表单api以帮助简化采用。一个简单的例子:

from pycontract import DataContract, StringField, NumberField

class Person(DataContract):
    name = StringField()
    phone = StringField(null=True)
    age = NumberField(null=True)

bob = Person()
bob["name"] = "Bob Smith"
bob["phone"] = "999-555-1234"
bob["age"] = 32

在本例中,声明person的契约,并实例化bob的记录。在 除了基本数据之外,我们还可以添加processors来操作或清除数据 作为validators,验证数据类似于django验证器。

功能

  • 可定制的验证(与django验证器兼容)。
  • 用于清理和格式化数据的数据处理器。
  • 声明性字段定义。
  • 强制值分配有助于避免回归错误。
  • 根据MIT License授权。

基本用法

第一步是定义一个基本契约。这是通过从pycontract.DataContract继承来完成的。下一个 我们决定每个字段是否需要标准处理。例如,我们可以使用 strip_white_space处理器对每个值调用pythonsstrip。最后我们决定是否有 值上需要的额外验证。例如,确保人名以“a”开头 我们可以使用RegexValidator。因此,有了这些信息,我们可以这样声明这个数据契约:

from pycontract import DataContract, StringField, NumberField, strip_white_space, RegexValidator

class Person(DataContract):
    name = StringField(processors=(strip_white_space,), validators=(RegexValidator(r"[aA].+"),))
    phone = StringField(null=True)
    age = NumberField(null=True)

现在在运行时,我们可以设置值,检查有效的契约,最后访问这些值。想要点什么 像这样:

>>> manny = Person()
>>> manny["name"] = "Angel Man "
>>> manny["phone"] = "999555-1234"
>>> manny["age"] = 22
>>> manny.is_valid()
True
>>> print manny.name
'Angel Man'

这是早期版本,代码库非常短,因此有关更多信息,请参见代码。源头 代码可以在github找到。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法使用JAXB配置Moxy   java如何让我的简单Swing telnet客户端正确显示字符?   java中从可运行线程调用主线程的多线程处理   java数据源。EBJ3会话bean中的getConnection()   使用java和正则表达式从xml文件提取值时出现问题   java定制Jersy胡须Mvc   在Java中,“限制并发”是什么意思?   java有没有更干净的方法可以在这里使用Optional,而不在三个地方返回“NA”?   java Tomcat启动,然后崩溃,除非我打电话   java理解客户机和服务器   java时间戳将在视图对象>实体转换期间丢失   如何在java中返回布尔值(基元)?   java使用spring mvc设置日志记录,希望仅对我的代码进行跟踪/调试   用Jackson解析嵌套对象