将zope模式定义序列化到xml和从xml序列化zope模式定义
plone.supermodel的Python项目详细描述
简介
supermodel基于 zope.schema字段。主要用例是:
< Buff行情> <P>1。在基于XML文件的代码中定义架构接口。这是可以做到的 语法如下:>>> from plone.supermodel import xmlSchema >>> IMySchema = xmlSchema("myschema.xml")<P>2。通过XML格式保存和加载接口定义。转换架构 接口为XML,您可以执行以下操作:
>>> from plone.supermodel import serializeSchema >>> xml_string = serializeSchema(IMySchema)
要从XML文件获取架构,可以使用上面的xml schema()函数, 或者可以使用更强大的spec()函数,它将 给定XML文件中的模式和小部件提示。
有关详细信息,请参见源代码中的schema.txt和interfaces.py, 包括有关如何为窗体提供小部件提示以及如何保持 同一XML文件中有多个架构。
超级模特vs.用户模式
这个包与tres seaver的"userschema"库非常相似,后者 可以在http://agendaless.com/members/tsaver/software/userschema" rel="nofollow">http://agendaless.com/members/tsaver/software/userschema上找到。
实际上,plone.supermodel最初是基于userschema的。然而,作为 包经过了优化和重构,保留的用户模式越来越少, 到了我们需要对后者进行重大重构的地步 继续使用它。
XML导入/导出代码当前基于编写的算法 对于plone.app.portlets和plone.app.contentrules的genericsetup处理程序。
这两个软件包之间的一些主要区别是:
< Buff行情>userschema可以从html表单和csv创建模式接口 电子表格。plone.supermodel不支持这种配置。
用userschema创建的模式通常在启动时加载 zcml指令。supermodel支持"伪基类"语法, 如上所示,在python代码中定义接口。除此之外,它的api 更倾向于运行时配置。
supermodel支持将模式序列化为xml。
supermodel xml语法更直接地与zope.schema绑定 字段,并从由 每个zope.schema字段。这有两个优点:
< Buff行情>- zope.schema的api文档可以轻松应用于<;schema/>; 块
- 新字段和模糊属性更易于支持
supermodel的xml模式旨在支持更多的模式元数据, 包括小部件提示。
在将来,可以使userschema重用 plone.supermodel或反之亦然,具有更多重构功能。