zeam.form的支持Zope工具包
项目描述
zeam.form.ztk 帮助您将 zeam.form.base 与 Zope 工具包集成。它提供
从 zope.schema 字段生成表单字段,以及列在 Zope 接口中的 zope.schema 字段
这些字段的小部件
默认操作为添加、编辑内容,通过返回内容默认视图来取消当前操作。
与 zeam.form.base 一样,重点是提供一个开发者可用的API,而不是支持您不需要的理论用例。
示例
让我们创建一个表单来编辑内容。这里有一个我们内容的界面
from zope import schema, interface class IClan(interface.Interface): pass class IPerson(interface.Interface): first_name = schema.TextLine(title=u"First Name") last_name = schema.TextLine(title=u"Last Name") age = schema.Int(title=u"Age", required=False) single = schema.Bool(title=u"Is single ?", default=True)
我们假设一个Person属于一个Clan。我们可以实现一个Person
from persistence import Persistent class Person(Persistent): interface.implements(IPerson) first_name = None last_name = None age = None single = True
添加表单
你可以这样在部落中添加一个新的Person
import zeam.form.ztk as form class Add(form.Form): form.context(IClan) label = u"New person" fields = form.Fields(IPerson) actions = form.Actions( form.AddAction("Add", factory=Person), form.CancelAction("Cancel")) actions['add'].fieldName = 'last_name'
编辑表单
你可以这样编辑一个Person
class Edit(form.Form): form.context(IPerson) label = u"Change person details" fields = form.Fields(IPerson) actions = form.Actions( form.EditAction("Update"), form.CancelAction("Cancel")) ignoreContent = False
API
zeam.form.base 的所有API都已导出。
操作
- 添加操作
一个额外的参数工厂用于创建存储在内容对象上的对象的操作。创建的对象通过 INameChooser 添加以获取其标识符。将使用 fieldName 选项在表单数据中查找值,并将其作为潜在标识符提供给 INameChooser。之后,使用表单数据编辑创建的对象(类似于 EditAction 所做的)。
- 编辑操作
在表单提交验证后,使用表单数据更改指定表单字段的内容对象上的值的操作。
- 取消操作
简单的操作,在未验证表单提交的情况下返回内容的默认视图。
字段
当前支持的字段
日期,日期时间:生成一个文本行输入,并使用区域设置解析/显示日期,
文本行,文本,布尔值,URI,电子邮件和数字(Int,Float ...),
密码,
选择:生成一个选择或单选按钮(小部件模式 radio),
对象,
集合:输入和显示模式下的列表,集合,元组
选择集的集合:生成一个带有复选框列表的小部件,
对象的集合:生成一个用于编辑多个对象的表格,
其他集合:生成一个带有通用添加和删除操作的小部件。
有关更多文档,请参阅代码中包含的doctests。
变更日志
1.4.0 (2020/08/20)
迁移到Python3.6+。已删除Python2支持。
1.3.6 (2018/01/15)
修复了使用defaultFactory的问题
更新到GTK包的新版本
1.3.5 (2016/03/08)
扩展Mock Library类以使其与最新的fanstatic api兼容。
1.3.4 (2014/04/15)
引入了来自 zope.schema 的“defaultFactory”属性。这是从zope.schema DefaultProperty计算默认值所必需的。
1.3.3 (2013/12/20)
更新集合javascript不再绑定到文档,而是绑定到字段。这防止了事件被拦截时的中断。重新排序按钮不再提交表单,即使没有包含javascript。
允许用户自定义字段上的 disabled 属性。
更新集合javascript以与jQuery 1.9一起工作。现在至少需要jQuery 1.7。
1.3.2 (2013/04/23)
添加了一个原生的电子邮件小部件。
1.3.1 (2012/11/19)
更新字段以正确传递 zope.schema 的 contrainValue 验证器。
修复所有字段以正确处理必需的(在前一个版本中由于某些字段而损坏)。
1.3 (2012/10/12)
更新字段和小部件不再代理 zope.schema。相反,它们执行自己的验证并独立(可以在没有 zope.schema 的情况下创建和使用)。
支持更多的HTML 5功能,例如对于数字字段,以及可以使用 htmlAttributes 插入的额外属性,如 placeholder…
添加了一个 CurrencyField,可以用来很好地显示货币。
1.2.3 (2012/09/24)
更新API以使用 zeam.form.base 1.2.3。
1.2.2 (2012/07/25)
调整 CheckboxWidgetExtractor 以将 False 输入转换为 bool False。
1.2.1 (2012/04/27)
改进选择小部件,使其能够自定义其源。添加对 IFormSourceBinder 的支持,它类似于 IContextSourceBinder,但将表单作为参数而不是上下文(因此还可以访问请求等)。
向数据管理器添加了一个 delete 方法。
现在使用 grokcore.chameleon 而不是 megrok.chameleon。
1.2 (2011/11/08)
改进了收集小部件的错误报告。感谢Novareto提供赞助。
在收集小部件中添加和删除值时,添加了验证选项。感谢Novareto提供赞助。
改进了收集小部件的JavaScript。添加了额外的fanstatic以自动要求所需的文件。
如果需要收集小部件,当它为空时,它将默认在集合中显示一个空项目。这防止了额外点击来添加它。
在InvariantsValidator中进行了各种修复。
SchemaWidgetExtractor和SchemaField现在可以捕获无效异常。
在所有模板中添加了对HTML 5属性required的支持。在表单标签上使用属性novalidate来禁用它。
为对象和uri字段添加了显示小部件。
将valueLength选项添加到日期小部件中。可以使用任何Zope格式器大小(short、medium等)。
1.0 (2010/10/19)
为多选添加了multiselect小部件。
添加了readonly小部件。
为布尔值和集合添加了display小部件。
为URI添加了HTML5小部件。
现在即使没有接口(如果它们提供属性__name__),也可以对Schema字段进行适配。
添加了更多测试,修复了收集小部件和不变量验证器中的问题。
所有翻译都位于zeam.form.base中。
更新到使用zeam.form.base的最新版本。
1.0rc2 (2010/07/16)
为选择添加了radio小部件。
为多选添加了显示小部件。
所有字段都有field CSS类。
多选小部件现在正确地尊重词汇表术语的值。
1.0rc1 (2010/07/05)
更新了入口点注册,以与最新的zeam.form.base兼容。
1.0b3 (2010/06/22)
字段包装注册现在通过入口点完成。
添加了不变量验证。
添加了一个通用的自适应数据管理器,可以将表单内容适配到一个或多个接口。
1.0b2 (2010/05/13)
改进了小部件初始化,并支持测试层。
修复了在使用词汇表工厂时选择小部件的问题。
1.0b1 (2010/05/03)
这是初始版本,并非所有小部件都可用。