基于Grok的表单框架
项目描述
摘要
zeam.form.base 是一个Zope的表单框架。它与 formlib 或 z3c.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.component和grokcore.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)。
字段getDefaultValue和defaultValue现在接受一个参数,即表单本身。这允许您计算需要上下文的默认值。
已修复一些提取问题:不再提取不可用的字段,并且现在可以多次调用extractData方法,使用不同的字段集合。
已为操作添加了一些选项:一个postOnly标志,它要求表单仅通过POST方法提交,以及description和accesskey属性。在表单级别也提供了postOnly选项。
操作返回一个状态标志以指示成功或失败。
已向表单添加了一些辅助函数:haveRequiredFields和htmlId。默认表单也具有类似于Grok视图的static属性。
将属性formError更改为formErrors,现在它是一个错误列表而不是单个错误。因为表单中可能有多个主要错误(例如,不变量)。
将formtemplate更改为以
- 结构显示新的formError,而不是用于单个错误的… tal:replace …。
在Collection组件上添加了sort和reverse方法。已添加相应的测试。
提供了一个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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | af01682e8be60e3ce7a3b4f200376b750d76cf882e91be92e909a4ff21eb62ec |
|
MD5 | e364fa1aef63d1ea27ca6207962f5914 |
|
BLAKE2b-256 | 5bd2d154cf2dd8954d4e18700e0536bf165a0e5e9283ad08a1f37454475b288e |