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如何通过不精确的参数类型获取构造函数?   找到java文件,但扫描程序未读取   在本地java服务器中部署google translation api,而不调用web服务。   java无法分析Adb版本(错误的ELF类)   java从模型到Servlet再到JSP选项列表获取信息   如何解决将xml文件转换为java文件时出现的错误?   Linux上从Java访问PC硬件端口   java如何覆盖Spring启动库属性?   java在maven的REST服务下获取JDBC连接   java如何将数组对象传递给构造函数?   java Spring BeanFactory作为Swing应用程序中的单例   带JsonDeserializer的java Lombok   用于多个文件的java Groovy脚本xml解析器   java如何从restful web服务中获取一些数据,并将其保存到数据库中?   servlet在java中提取ZIP   在Java中使用超类处理异常   java使hibernate在不使用@OneToOne@OneToMany等的情况下生成外键约束   基于tomcat web应用程序的用户角色的java只读访问   java在一个3乘n的表中找到具有最佳方差的3个值的集合   java Apache Commons CLI:获取选项的字符串值数组