跳转到主要内容

为zope.formlib组件提供类似Grok的配置

项目描述

本软件包提供使用Zope Formlib库编写表单并直接在Python中注册(无需ZCML)的支持。

设置 grokcore.formlib

本软件包的设置类似于grokcore.component软件包,请参考其文档以获取详细信息。您需要的附加ZCML行如下:

<include package="grokcore.formlib" file="meta.zcml" />
<include package="grokcore.formlib" />

将第一行放在根ZCML文件顶部附近。

示例

我们需要一个示例接口

from zope import interface, schema

class IMammoth(interface.Interface):

   name = schema.TextLine(title=u"Name")
   age = schema.Int(title=u"Age", min=0)

编辑表单

您可以为类似IMammoth的对象提供如下编辑表单:

from grokcore import formlib

class Edit(formlib.EditForm):

   formlib.context(IMammoth)

如果您的内容对象定义在相同的Python文件中,并实现了grokcore.formlib.IContext,则它将成为您表单的默认上下文。

显示表单

显示表单与编辑表单一样简单

class Index(formlib.DisplayForm):

   formlib.context(IMammoth)

通用表单

您可以构建更通用的表单,为表单提供自己的操作

class ISearch(interface.Interface):

    search = schema.TextLine(title=u"Text")

然后,您定义您的表单。它应用于mammoth,但使用ISearch接口来生成字段

class Search(formlib.Form):

    formlib.context(IMammoth)

    form_fields = formlib.Fields(ISearch)

    def update(self):
        # Default search results are None
        self.search_result = None

    @formlib.action(u"Search")
    def search(self, text):
        self.search_result = 'something found with text'

创建一个自定义模板 search.pt 来渲染您的表单(在目录modulename_templates中)。

添加表单

添加表单的工作方式与通用表单类似,您必须提供Add操作。

自定义

由于Grok表单是Grok视图,所有在Grok视图中可用配置指令和属性在Grok表单上也是可用的。

这意味着您可以通过将其与模板相关联来自定义表单。模板负责显示小部件和操作。访问它们的API与Zope Formlib表单相同。

您不能通过在表单上提供一个render()方法来自定义表单,但如果需要,您仍然可以使用update()方法。

请参阅grokcore.view的文档以获取更多详细信息。

API概述

基本类

EditForm

扩展Form以创建内容编辑表单。

DisplayForm

创建简单的显示表单。

Form

是创建通用表单的基础类。

AddForm

扩展Form以创建添加表单。您必须提供add操作,该操作将创建新对象。

装饰器

action

是一个装饰器,用于在表单上创建操作。您的操作只需要接受表单值作为参数。

辅助函数

AutoFields

从给定上下文创建表单字段。如果上下文是一个接口,则在该接口中定义的Zope字段将被用于构建表单字段。如果上下文是一个常规对象,则将使用该对象的实现的所有接口的Zope字段来构建表单字段。

Fields

在表单上创建和重新排序字段。

此外,grokcore.formlib软件包公开了grokcore.componentgrokcore.securitygrokcore.view API。

变更

4.0 (2023-08-28)

  • 支持Python 3.7、3.8、3.9、3.10、3.11。

  • 取消支持Python 2.7、3.4、3.5、3.6。

3.0.1 (2018-01-12)

  • 重新排列测试,以便Travis CI可以拾取所有功能测试。

3.0.0 (2018-01-04)

  • Python 3 兼容性。

1.11 (2016-06-20)

  • grok.action 现在将触发对请求中完全缺失的必填字段的 RequiredMissing 验证错误。

1.10.1 (2016-02-15)

  • 更新测试。

1.10 (2015-04-01)

  • 表单现在通知 ObjectEditedEvent 而不是 ObjectModifiedEvent

1.10a1 (2013-11-22)

  • 添加 zope.formlib 中 CSRF 保护功能的兼容性。

1.9 (2012-05-01)

  • 目前还没有任何变化。

1.8 (2010-11-03)

  • 上下文指令现在有自己的默认计算。

1.7 (2010-11-01)

  • 更新 martian、grokcore.component、grokcore.security 和 grokcore.view 的版本要求。

1.6 (2010-10-18)

  • 使包符合 zope.org 存储库策略。

  • 将功能测试更新为 zope.app.wsgi 浏览器,而不是 zope.app.testing 的一个。

  • 不再依赖于 zope.app.zcmlfiles 进行测试。

1.5 (2009-12-13)

  • 使用 zope.container 而不是 zope.app.container(在测试和 configure.zcml 中)。

  • 修复了缺失的依赖项,并分开了常规和测试依赖项。

1.4 (2009-09-17)

  • grokcore.view 1.12 中反映了更改,其中 ViewCodeView 再次成为单个 View。这回到了 grokcore.formlib 1.1 的 View 情况。

1.3 (2009-09-16)

  • 删除了对已不再存在于 grokcore.security 1.2 中的 grok.View 权限的引用。

  • 在 Grok 的发布信息中使用 1.0b1 版本的 versions.cfg,而不是本地副本;维护所有 grokcore 包的本地副本太困难了。

1.2 (2009-07-20)

  • 调整测试以适应 View 和 CodeView 的 grokcore.view 分割。

  • 修复表单以直接使用 self.template.render(),而不是使用从 grokcore.view 移除的私有方法。

  • 为功能测试添加 grok.View 权限。

1.1 (2009-01-07)

  • GrokForm 默认定义一个空的 actions 属性,以便于“无操作”表单的工作。

1.0 (2008-09-25)

  • 2008 年 7 月创建 grokcore.formlib,通过从 Grok 中提取基于 zope.formlib 的组件、grokkers 和指令来实现。

项目详细信息


下载文件

下载适合您平台文件的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

grokcore.formlib-4.0.tar.gz (25.9 kB 查看散列)

上传时间

构建分布

grokcore.formlib-4.0-py3-none-any.whl (37.4 kB 查看散列)

上传时间 Python 3

由以下机构支持