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 |