Zope 2布局系统
infrae.layout的Python项目详细描述
infrae.layout定义了一种可以重用 Zope 2中已有的已定义布局。它类似于megrok.layout, 以同样的方式工作,并添加一些内容。
API
您可以定义一个layout将由page使用。a页是 同样的观点和行为。页面将查找布局并将 在里面渲染。
page和layout都可以通过render 方法,或通过关联的模板,与grok视图完全相同。
通过调整请求和内容可以找到layout: 您可以为皮肤注册布局,然后为特定内容注册布局。
如果这还不够,页面可以使用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()如果上述MeCeCon对你的应用不够灵活,你可以 在请求和内容上编写一个适配器 ILayoutFactory。 适配器将允许您对逻辑进行编码,以选择所需的任何布局。
更改
1.0(2010/07/16)
- 初次发布。