跳转到主要内容

为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.componentgrokcore.securitygrokcore.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。

  • 更新在ViewletManagerViewlet上查找静态资源的方式,遵循模板关联设置的新名称__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 (24.4 kB 查看哈希)

上传时间

构建分布

grokcore.viewlet-4.0-py3-none-any.whl (36.5 kB 查看哈希)

上传时间 Python 3

支持