为Grok使用z3c.form编写的复合表单。
项目描述
megrok.z3cform.composed 是一个用于定义和注册复合表单的包。复合表单是由一系列子表单组成的表单。
megrok.z3cform.composed 基于 z3c.form 和 megrok.z3cform.base。
入门指南
我们导入所需的依赖项
>>> import grokcore.view as grok >>> import megrok.z3cform.composed >>> from megrok.z3cform.composed import ComposedForm, SubForm
导入组件工具
>>> from zope.component import getMultiAdapter >>> from zope.publisher.browser import TestRequest
定义复合表单
上下文
表单需要一个上下文。让我们创建一个用于测试目的的简单模型
>>> class MyContent(object): ... pass
声明
>>> class Form(ComposedForm): ... grok.context(MyContent)
注册
>>> grok_component('composed', Form) True
查询
>>> content = MyContent() >>> request = TestRequest()>>> composed = getMultiAdapter((content, request), name="form") >>> composed <megrok.z3cform.composed.tests.Form object at ...>>>> composed.subforms []>>> composed.updateForm() >>> composed.subforms []
定义子表单
声明
>>> class SubFormOne(SubForm): ... grok.context(MyContent) ... megrok.z3cform.composed.order(2) ... megrok.z3cform.composed.view(Form)>>> class SubFormTwo(SubForm): ... grok.context(MyContent) ... megrok.z3cform.composed.order(1) ... megrok.z3cform.composed.view(Form)
注册
>>> grok_component('one', SubFormOne) True>>> grok_component('one', SubFormTwo) True
查询
>>> composed.subforms []>>> composed.updateForm() >>> composed.subforms [<megrok.z3cform.composed.tests.SubFormTwo object at ...>, <megrok.z3cform.composed.tests.SubFormOne object at ...>]>>> for sub in composed.subforms: ... print sub.prefix, sub.parentForm subformtwo <megrok.z3cform.composed.tests.Form object at ...> subformone <megrok.z3cform.composed.tests.Form object at ...>
变更日志
0.1 (2009-10-27)
初始发布