跳转到主要内容

基于Grok的表单框架

项目描述

摘要

zeam.form.base 是一个Zope的表单框架。它与 formlibz3c.form 有共同的目标和目的,但试图

  • 定义小的、合理的、可重用的组件:您不需要一个完整的表单来渲染和显示应用中的少量小部件,

  • 易于自定义,而无需使用数百个适配器:大多数设置都通过表单/字段上的属性来设置,

  • 通过使用Grok来注册所需的最少适配器(小部件和值提取器)来防止ZCML声明,

  • 始终保留上下文不变:表单在内容上工作,内容可以不是上下文本身,甚至可以是一个字典。这意味着在表单的任何地方,包括小部件和操作中,你都可以访问表单的实际上下文,并有一种方法可以访问表单正在处理的内容。如果你使用的是复杂的小部件,包括它们嵌入在其他小部件中(如列表或表格)时,这非常有帮助。

  • 通过默认使用megrok.pagetemplate,让用户能够轻松地更改表单模板,选择他们想要的字段位置。

  • 让用户能够轻松定义他们的小部件,并使用它们。

  • 能够创建复杂表单,如组合表单或表格表单,其中每个表单都可以修改它所需的数据,而无需黑客式地刷新其他子表单:所有操作都是在任何小部件计算其值以渲染之前执行的。

默认情况下,它不了解Zope-schema之类的概念。从Zope-schema生成字段将需要借助zeam.form.ztk来完成。

它与Python 2.6、2.7(在Zope 2.13和Grok 1.5中测试过)兼容。旧版本适用于旧版本的Zope 2和Grok。

示例

让我们快速定义一个示例。操作可以是独立的

from zeam.form.base import Action, SUCCESS

class MailAction(Action):

   def available(self, form):
       return form.context.haveMailHost()

   def __call__(self, form):
       # Send a mail
       form.status = u"Mail sent"
       return SUCCESS

也可以作为属性包含在表单中

class MailForm(Form):
   label = u"Send a mail"
   description = u"to people"
   fields = Fields(Field(u'Name'), Field(u'E-mail'), Field(u'Message'))
   actions = Actions(MailAction(u'Send mail'))

(如果你不需要为操作编写很多代码,可以在表单方法上使用装饰器)。

更多信息

您可以参考包中包含的功能和doctest。由于它试图由小型组件组成,因此有多种方式可以将它们组合在一起。

变更日志

1.4.1 (2020-08-25)

  • 修复了有问题的‘url’方法。相应地添加了测试。

1.4.0 (2020-08-20)

  • 仅适用于Python 3.6+。已放弃Python 2支持。

1.3.2 (2019-01-15)

  • 添加了默认工厂处理(需要测试)

  • 更新到GTK包的新版本

  • 将测试切换到zope.testbrowser.wsgi

1.3.1 (2012/11/19)

  • 改进操作htmlAttributes以反映字段API。

  • 改进和修复了字段上的constrainValue验证。

1.3 (2012/10/12)

  • 字段现在支持更多选项。已添加一个constrainValue方法,它可以与validate方法一起使用(以与zope.schema字段兼容)。还添加了一个interface选项,其他zeam.form组件可以使用它来分组字段。

  • 字段可以使用通过其构造函数提供的更多选项创建。

  • 字段和小部件现在支持额外的htmlAttributes。它们可以提供给字段构造函数,并由小部件自动渲染。

  • 操作也支持htmlAttributes

  • 更新翻译。

  • 添加一些向后兼容性助手。

1.2.3 (2012/09/24)

  • grokcore.chameleon能够自己协商国际化。删除了作为黑客方法的i18nLanguage属性。

  • 重构了小部件和提取器的创建方式。现在这是通过表单数据完成的,并且是可定制的。

1.2.2 (2012/05/02)

  • 更新到使用最新的grokcore.componentgrokcore.view

1.2.1 (2012/04/27)

  • 改进了组件(字段、操作、小部件)的排序支持。

  • 向数据管理器添加了一个delete方法。

  • 现在使用grokcore.chameleon而不是megrok.chameleon

  • 向表单默认命名空间模板添加了缺少的static

1.2 (2011/11/08)

  • 本版本不再支持Zope 2 2.12之前的版本。

  • 并添加了一个辅助程序来知道字段是否隐藏(这样你就不显示标签)。

  • 支持一个可调用来判断字段是否必须(可调用以表单作为参数)。

  • 在控件中添加默认的HTML 5属性required。如果想要禁用,请在表单标签上使用novalidate属性。

  • 改进错误报告。现在,一个控件可以返回一个错误集合(如果控件由多个子控件组成,则很有用)。

  • 扩展API以支持dataValidator和控件prepareRequestValue

  • 添加了对复合操作(由不同的操作集合实现的操作)的支持。

  • updateActions现在返回执行动作的表单。这对于子表单很有用。

1.1 (2011/02/01)

  • zeam.form.base现在使用最新的grokcore.view模板grokker。

  • 已更新依赖项以支持最新的grokcore和megrok包。

1.0 (2010/10/19)

  • 翻译已完成并已用荷兰语、法语和德语审查。

  • 已添加一个基础设施来对所有字段编写通用的验证器(在FormData上使用dataValidators)。

  • 字段getDefaultValuedefaultValue现在接受一个参数,即表单本身。这允许您计算需要上下文的默认值。

  • 已修复一些提取问题:不再提取不可用的字段,并且现在可以多次调用extractData方法,使用不同的字段集合。

  • 已为操作添加了一些选项:一个postOnly标志,它要求表单仅通过POST方法提交,以及descriptionaccesskey属性。在表单级别也提供了postOnly选项。

  • 操作返回一个状态标志以指示成功或失败。

  • 已向表单添加了一些辅助函数:haveRequiredFieldshtmlId。默认表单也具有类似于Grok视图的static属性。

  • 将属性formError更改为formErrors,现在它是一个错误列表而不是单个错误。因为表单中可能有多个主要错误(例如,不变量)。

  • 将formtemplate更改为以

    • 结构显示新的formError,而不是用于单个错误的… tal:replace …。

    • Collection组件上添加了sortreverse方法。已添加相应的测试。

    • 提供了一个cmp函数来对Collection中的组件进行排序。这现在已彻底测试并演示。

1.0rc2(2010/07/16)

  • 允许提取影响的标记也影响处理来自请求的值。

  • 默认导出DataManager API。

  • 可以扩展装饰动作。您可以通过装饰器的factory参数提供自己的实现。

1.0rc1(2010/07/05)

  • 由于引入了validateData方法,已将ExtractData方法拆分为两个,这允许表单覆盖全局表单验证过程。这使字段验证与非常相同的地方,并且只涉及一般的表单验证过程。

  • 为表单模式创建了一个新的标记子类。这个标记类定义了一个布尔值,允许或禁止在表单处理期间提取受影响的组件。已添加相应的测试。

  • 在将项适应到集合中的组件之前,先查找条目点zeam.form.components。这使您可以在它们被使用之前注册适配器。

1.0b4(2010/06/22)

  • 现在可以将“Errors”类用作“Error”的逻辑分组,在这种情况下它是堆叠的。添加了测试以演示和修复此行为。

1.0b3(2010/06/04)

  • 修复了标识符生成方式。现在,空前缀不再生成不正确的ids/names。添加了测试以修复此行为。

1.0b2(2010/05/13)

  • 修复了FormData初始化中的错误。

  • 添加了NO_CHANGE标记。

1.0b1(2010/05/03)

  • 初始发布

项目详情


下载文件

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

源分布

zeam.form.base-1.4.1.tar.gz (48.5 KB 查看哈希值

上传时间

由支持