Zope 2的布局系统
项目描述
infrae.layout定义了一种在Zope 2中重用现有定义布局的方法。它与megrok.layout类似,并且以相同的方式工作,有一些补充。
API
您可以定义一个将用于页面的布局。一个页面是一个视图,并且表现方式相同。页面将在布局内渲染。
页面和布局都可以通过render方法或关联的模板进行渲染,就像Grok视图一样。
通过适配请求和内容来查找布局:您可以为您的皮肤注册布局,然后为特定内容注册。
如果这还不够,页面可以使用Grok指令layout直接指定其使用的布局类型。在定义您的布局时,您可以使用相同的指令声明类型所属的布局。例如,如果您有一个皮肤ICorpSkin
from infae.layout import layout, Layout, ILayout, Page from five import grok from corp.skin import ICorpSkin grok.skin(ICorpSkin) class ViewLayout(Layout): def render(self): return u'View %s' % self.view.content() class Index(Page): def render(self): return self.context.title()
现在如果在同一内容上您想要一个版式布局,例如
class IEditionLayout(ILayout) """Layout to edit content """ class EditionLayout(Layout): layout(IEditionLayout) def render(self): return u'Edit %s' % self.view.content() class Edit(Page): layout(IEditionLayout) def render(self): return self.context.title()
如果上述机制对您的应用程序来说不够灵活,您可以在请求和内容上编写一个适配器,该适配器提供 ILayoutFactory。适配器将允许您编写选择任何布局所需的逻辑。
变更
1.0 (2010/07/16)
初始发布。
项目详情
关闭
infrae.layout-1.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1b93705a82d0ac2f3a38b3a35244cac12ff21efe332dd2f16bb647d1b03b9aaa |
|
MD5 | 2d9ca0061206917af38098474a310322 |
|
BLAKE2b-256 | 3631f81e73df81aa4e81c4af66b8467d64127743fbd38accd600c66866995899 |