Z3Cform的Megrok扩展
megrok.z3cform.base的Python项目详细描述
megrok.z3c form.base是z3c.form上方不太厚的一层。它 提供一种注册表单和小部件的方法。在 另外,包中有一组基本表单,可以使用 使用grokcore.layout(或旧的megrok.layout)开箱即用。
通过使用 megrok.pagetemplate,允许您轻松覆盖模板。
表单注册
型号
我们建立了一些模型作为表单上下文:
>>> import grokcore.component as grok >>> from zope import interface, schema >>> class IMammoth(interface.Interface): ... name = schema.TextLine(title=u"Name") ... age = schema.Int(title=u"Age") >>> class Mammoth(grok.Context): ... grok.implements(IMammoth) ... name = schema.fieldproperty.FieldProperty(IMammoth['name']) ... age = schema.fieldproperty.FieldProperty(IMammoth['age'])
我们申报表格。它与Grok非常相似。视图:
>>> import megrok.z3cform.base as z3cform >>> class TestForm(z3cform.Form): ... grok.context(Mammoth)
摸索和查询
我们让grok注册组件:
>>> grok.testing.grok_component('form', TestForm) True
现在,我们可以正常查询:
>>> from zope.publisher.browser import TestRequest >>> request = TestRequest() >>> manfred = Mammoth() >>> from zope.component import getMultiAdapter >>> myform = getMultiAdapter((manfred, request), name="testform") >>> myform <TestForm object at ...> >>> print myform() <form action="http://127.0.0.1" method="post" enctype="multipart/form-data" class="form-testform"> ...
布局集成
megrok.z3cform.base与 grokcore.layout,提供基类以简化布局集成 在你的项目中。
让我们快速浏览一下。我们创建一个布局:
>>> import grokcore.layout >>> class MyLayout(grokcore.layout.Layout): ... grok.context(IMammoth) ... def render(self): ... return 'The layout content is: %s' % self.view.content()
我们声明一份页表。页面表单是显示在内部的表单 布局:
>>> class PageForm(z3cform.PageForm): ... grok.context(Mammoth)
我们向grok注册组件:
>>> grok.testing.grok_component('page', PageForm) True >>> grok.testing.grok_component('layout', MyLayout) True
现在,在呈现表单时,我们将其嵌入到布局中:
>>> pageform = getMultiAdapter((manfred, request), name="pageform") >>> print pageform() The layout content is: <form action="http://127.0.0.1" method="post" enctype="multipart/form-data" class="form-pageform"> ...
更改日志
0.5(2012-07-21)
- 添加了对新grokcore.layout的支持。不再依赖 直接布局。[丹尼洛博特略]
0.4(2012-06-22)
- 为验证器、不变量和默认值添加了装饰符。 这些装饰器的思想来自plone.directives.form。
- 添加了对组的支持(z3c.form.group)[danilobotelho]
- 修正了widgettemplategrokker[danilobotelho]
- 将隐藏模式添加到初始化py[danilobotelho]
0.3(2010-02-11)
- 修复了小部件模板grokker中与操作系统相关的路径处理。
0.2(2009-11-18)
- 修正了objectmodifiedvent触发次数超过 一次编辑。[巨魔]
- 升级到与grok 1.1兼容。[巨魔]
0.1(2009-10-20)
- 初始版本