基于z3c.table的Grok表格组件包。
项目描述
《megrok.z3ctable》包是围绕z3c.table组件的包装器。z3c.table允许您将HTML表格定义为zope3组件,将列定义为多适配器。
多亏了megrok.z3ctable,这些组件现在在Grok中完全可用,使它们易于声明和配置。以下组件可用
表格
列
值
除了简单的包装外,megrok.z3cform还为您提供了创建显示表格页面的新便捷方法
TableView:一个简单的浏览器视图,显示表格。
TablePage:一个包含在布局中的表格浏览器视图(请参阅megrok.layout)
有关更多信息及更详细的示例,请参阅此包的测试目录。
入门指南
首先,我们了解包的grokkers
>>> import grokcore.component as grok >>> from grokcore.component import testing >>> from grokcore.component.testing import grok_component >>> testing.grok('megrok.z3ctable')
测试设置
让我们创建简单的项目来演示此包。在这里,表格将表示文件夹列表的表示,按顺序显示简单容器的内容
>>> from megrok.z3ctable.tests import Container, Content >>> from zope.container import btree >>> from zope.publisher.browser import TestRequest >>> request = TestRequest()
让我们创建2个虚拟内容
>>> christian = Content('Christian', 29) >>> trollfot = Content('Trollfot', 27)
然后,我们实例化一个容器并将2个虚拟内容存储在其中
>>> container = Container() >>> container['christian'] = christian >>> container['trollfot'] = trollfot
一个简单的表格
我们定义一个简单的表格。在这里,组件仅注册自身,内部没有定义任何逻辑
>>> from megrok.z3ctable import Table, Values >>> from megrok.z3ctable import ITable >>> class SimpleTable(Table): ... """ My Simple Table """ >>> ITable.implementedBy(Table) True
让我们创建一个Table实例
>>> myTable = SimpleTable(container, request) >>> ITable.providedBy(myTable) True
现在,我们需要给我们的表格填充内容。为了提供一种可插入的方式来获取内容,z3c.table 提出了一种名为“Values”的适配器。它负责获取要显示的数据
>>> class MyValues(Values): ... grok.adapts(btree.BTreeContainer, None, SimpleTable) ... ... @property ... def values(self): ... return self.context.values()
我们理解了 MyValues 适配器
>>> grok_component('MyValues', MyValues) True >>> myTable.update() >>> myTable.render() u''
目前没有输出,因为这张表格本身不包含任何逻辑。数据是通过称为“列”的组件来显示的。列是一个多适配器,它适应上下文、请求和表格。它允许非常灵活地处理表格和数据表示。让我们定义一个简单的列
>>> from zope.interface import Interface >>> from megrok.z3ctable import NameColumn >>> from megrok.z3ctable import table >>> class Names(NameColumn): ... grok.context(Interface) ... table(SimpleTable)
现在我们理解了我们的列
>>> grok_component('Names', Names) True
并重新渲染表格
>>> myTable.update() >>> print myTable.render() <table> <thead> <tr> <th class="sorted-on ascending">Name</th> </tr> </thead> <tbody> <tr> <td class="sorted-on ascending">christian</td> </tr> <tr> <td class="sorted-on ascending">trollfot</td> </tr> </tbody> </table>
看这里。一个完全功能化和可插入的表格。享受吧。
变更日志
1.6.0 (2013-10-08)
现在使用 grokcore.layout 而不是 megrok.layout
1.5.0 (2011-01-31)
适配了 martian 和 grokcore.component 的最新版本。
1.4.2 (2010-05-07)
从 Dolmen 的 GIT 迁移到 Zope 的 Subversion 代码库。已删除 MANIFEST,同时添加了许可证文件。megrok.z3ctable 受 ZPL 许可证的约束。
1.4.1 (2010-02-21)
清理了所有 zope.app 依赖关系。删除了未使用的导入并重新结构化测试模块。我们现在使用最小依赖。
megrok.z3ctable 现在需要 zope.component >= 3.9.1。这意味着您必须在您的构建配置中使用最新的 ZTK KGS。这个 KGS 可以通过 groktoolkit 包含。
1.4.0 (2010-01-16)
现在使用 ztk 版本并修复了 z3c.table >= 0.8 的问题
1.3.0 (2009-09-24)
现在列有自己的解析器。在此之前,它们被视为基本的多适配器。我们现在使用一个专门的解析组件,具有明确的指令,这些指令可以自动链接到上下文和表格组件。有关更多详细信息,请阅读 ftests 中的测试“test_implicit”。[trollfot]
1.2.1 (2009-09-18)
为表单中的模板添加了新的测试 [cklinger]
1.2.0 (2009-09-17)
让 megrok.z3ctable 与 grokcore.view 1.12.2 兼容 [cklinger]
1.1.0 (2009-09-19)
将 megrok.z3ctable 适配到 megrok.layout 和 grokcore.view 的新版本 [cklinger]