为zope视图组件提供的类似Grok的配置
项目描述
此软件包提供在Python中直接编写和注册Zope Viewlets的支持(无需ZCML)。它旨在与grokcore.view一起使用,该软件包允许您编写和注册Zope视图。
设置grokcore.viewlet
此软件包的设置类似于grokcore.component软件包。请参阅其文档以获取更多详细信息。您将需要的附加ZCML行如下
<include package="grokcore.viewlet" file="meta.zcml" /> <include package="grokcore.viewlet" />
将第一行放在根ZCML文件顶部附近。
示例
首先我们需要一个视图来调用我们的Viewlet管理器
from grokcore import viewlet class Index(viewlet.View): pass index = viewlet.Page Template(""" <html> <head>Test</head> <body> <div tail:content="structure provider:content"> </div> </body> </html> """)
之后,我们只需定义一个仅显示内容的Manager
class Content(viewlet.ViewletManager): viewlet.View(Index) def render(self): return u'<h1>Hello World</h1>'
或者一个完全不同的示例
class AdvancedContent(viewlet.ViewletManager): viewlet.name('content') viewlet.view(Index)
并为它添加一些Viewlets
class StaticData(viewlet.Viewlet): viewlet.view(Index) viewlet.viewletmanager(AdvancedContent) def render(self): return f'<p> Data from {self.context.id}</p>'
或者
class SecretData(viewlet.Viewlet): viewlet.view(Index) viewlet.viewletmanager(AdvancedContent) viewlet.require('agent.secret') secretdata = viewlet.PageTemplate(""" <p>Nothing to see here.</p> """)
模板绑定到组件的方式与grokcore.view中的方式完全相同,有关更多信息,请参阅其文档。
API概览
基本类
- ViewletManager
定义一个新的Viewlet管理器。您可以为它提供一个渲染方法、一个模板,该模板可以使用或不需要已注册的Viewlets。
如果您定义了一个模板,将在模板命名空间中添加一个对当前视图的引用,该视图的管理器正在渲染模板。它也可以作为管理器对象上的一个属性使用。
- Viewlet
定义一个新的Viewlet。您可以为它提供一个模板或渲染方法。像在视图中一样,您可以定义一个更新方法来处理所需的数据。
对于管理器,如果使用,将在模板命名空间中添加一个对视图的引用。同时定义了在模板命名空间中的Viewlet管理器引用以及作为Viewlet对象上的属性。
指令
您可以使用来自grokcore.view的指令来注册您的Viewlet或Viewlet管理器:name、context、layer和require(对于Viewlet的安全性)。
此外,还包括
- view
选择为哪个视图注册了Viewlet或Viewlet管理器。
- viewletmanager
选择为哪个Viewlet管理器注册了Viewlet。
- order
为Viewlet管理器中的Viewlets定义一个渲染顺序。这应该是一个数字,较小的顺序先渲染,较大的顺序后渲染。
此外,grokcore.viewlet软件包公开了grokcore.component、grokcore.security和grokcore.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.1.0 (2018-02-05)
viewletmanager.viewlets应该是一个列表,这样我们就可以在消费者代码中多次迭代它,而无需记住它是一个只能迭代一次的可迭代对象。
3.0.1 (2018-01-12)
重新排列测试,以便Travis CI可以收集所有功能测试。
3.0.0 (2018-01-04)
Python 3兼容性。
1.11 (2012-09-04)
使has_render()和has_no_render()与grokcore.view、grokcore.layout和grokcore.formlib中的那些对称,其中检查render.base_method属性。
1.10.1 (2012-05-02)
不需要来自grokcore.security的额外角色。
1.10 (2012-05-02)
使用来自grokcore.component的组件注册API。
更新在ViewletManager和Viewlet上查找静态资源的方式,遵循模板关联设置的新名称__static_name__。
1.9 (2011-06-28)
介绍视图组件上的
available()
方法。视图管理器将通过调用此方法来过滤掉不可用的视图。在调用视图的update()
方法之后,但调用render()
方法之前,会调用available()
方法。
1.8 (2010-12-16)
更新以使用来自grokcore.view的TemplateGrokker来关联视图和视图管理器模板。
1.7 (2010-11-03)
视图管理器指令的默认计算值现在在指令本身中定义,而不是作为一个需要传递的单独函数。
1.6 (2010-11-01)
提高了martian、grokcore.component和grokcore.view的版本要求。
将顺序指令移动到grokcore.component。
将视图指令移动到grokcore.view。
1.5 (2010-10-18)
使包符合zope.org存储库策略。
更新功能测试以使用zope.app.wsgi的浏览器实现,而不是zope.app.testing。
减少依赖(zope.app.pagetemplate不再必要)。
1.4.1 (2010-02-28)
删除了对
zope.app.zcmlfiles
的依赖。清理代码以删除未使用的导入并确保PEP8语法。
更新测试以保持返回值的一致性。grokcore.viewlet视图管理器实现要求视图返回Unicode字符串。现在,测试包中的视图返回Unicode字符串。
1.4 (2010-02-19)
定义测试要求。
1.3 (2009-09-17)
撤销了grokcore.view.CodeView的使用。我们现在需要
grokcore.view
1.12.1或更高版本。自grokcore.view
1.12起,CodeView/View的分离已被取消。
1.2 (2009-09-16)
删除了对已不在grokcore.security 1.2中存在的grok.View权限的引用。
使用grok.zope.org/releaseinfo信息而不是我们自己的
versions.cfg
副本,以简化维护。
1.1 (2009-07-20)
将测试调整为新的grokcore.view版本:从View切换到CodeView。
向功能测试添加grok.View权限(需要grokcore.security 1.1)
1.0 (2008-11-15)
2008年11月创建
grokcore.viewlet
,通过将基于zope.viewlet的组件、grokkers和指令从Grok中提取出来。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分布
grokcore.viewlet-4.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4876407511c9153a43c4fd621b419fb7e80f7fa09242c07d9bb1f41683b359f6 |
|
MD5 | a27c47251026cbef161ec19b128f8f83 |
|
BLAKE2b-256 | d8a5e5043dfa84847fde2db39ccf7509bd1c78d6db52a526bc95ea0c4c0cc04b |