Z3Cform的Megrok扩展

megrok.z3cform.base的Python项目详细描述


megrok.z3c form.basez3c.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.basegrokcore.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)

  • 初始版本

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

推荐PyPI第三方库


热门话题
java Spring data rest域驱动设计发布非聚合根实体   使用ContentValues提升整数列的值(Java、Android)   Google应用程序引擎(Java)+Spring管理的PersistenceManager   java如何使用JDT获取封闭方法节点?   java在字符串中首先计算负数运算   java Android如何在单击按钮时更改底部导航项的颜色   java理解Javafx运行时错误   swing Java创建笔刷笔划动作   java在非Netty客户端中从Netty服务器获取响应   java计数将参数传递给方法   java Android AIDL gen文件导致警告?   swing Java JFrame互动程序   scjp测试中的java正则表达式测试   Java中的桌面应用   java我可以使用spring security在cookies中存储完整的用户信息吗?记住我   java中棘手的方法重载   java忽略Mockito中的方法调用   java skipUntil和具有并发1的flatMap挂起在Reactor中   为什么我要关闭java。util。扫描仪变量?