跳转到主要内容

简化z3c.pagelet处理

项目描述

gocept.pagelet

简化z3c.pagelet处理

版权(c)2007-2016 gocept gmbh & co. kg 保留所有权利。

本软件受Zope公共许可证,版本2.1(ZPL)的条款约束。ZPL的副本应随本分发一同提供。本软件按“原样”提供,并放弃所有明示或暗示的保证,包括但不限于标题保证、适销性保证、非侵权性和针对特定目的的适用性保证。

更改

2.0 (2023-07-18)

  • 放弃对Python 2.7、3.5、3.6的支持。

  • 添加对Python 3.9、3.10、3.11的支持。

1.1 (2019-06-10)

  • 支持Python 3.5、3.6、3.7、3.8、PyPy和PyPy3。

  • 使用tox进行测试。

1.0 (2016-04-06)

  • bootstrap.py更新到zc.buildout 2.3

  • 使用py.test作为测试运行器。

  • 明确支持Python 2.7。目前不支持其他Python版本。

0.4 (2013-03-28)

  • 当使用仅包含模板的ZCML注册页面组件时,模板的名称将在生成的类的repr中渲染,以便在调试时了解此类的用途。

  • 更新测试,使用Python的doctest代替已弃用的zope.testing.doctest

0.3 (2009-12-27)

  • 使用zope.browserpagezope.browsermenu代替zope.app.publisher

0.2 (2009-12-27)

  • 允许任意数量的上下文元素进行适配。

0.1 (2008-09-20)

  • 首次公开发布。

贡献者

  • Michael Howitz <mh at gocept dot com>

  • Christian Theune <ct at gocept dot com>

简化z3c.pagelet注册

<gocept:pagelet>指令允许更容易地注册z3c.pagelets。它的工作方式与<browser:page>非常相似。

设置

我们需要一些ZCML设置

>>> import sys
>>> from zope.configuration import xmlconfig
>>> import gocept.pagelet
>>> context = xmlconfig.file('meta.zcml', gocept.pagelet)

仅模板

只需使用模板作为页面组件即可。不需要类

>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="index.html"
...       for="*"
...       permission="zope.Public"
...       template="test-template.pt"
...       />
... </configure>
... """, context)

我们现在应该有一个页面

>>> import zope.component
>>> from zope.publisher.browser import TestRequest
>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='index.html')
>>> pagelet
<gocept.pagelet.zcml.SimplePagelet from .../gocept/pagelet/test-template.pt object at 0x...>
>>> pagelet.__name__
u'index.html'

当渲染页面组件时,将使用测试模板

>>> pagelet.render()
u'Hello from the test template.\n'

仅类

当然,也可以不使用模板注册一个类。创建一个类并将其在模块中可用

>>> from z3c.pagelet.browser import BrowserPagelet
>>> class MyPagelet(BrowserPagelet):
...     """Custom pagelet"""
...     def render(self):
...         return u"Hello from the custom pagelet."""

在虚拟包custom下使其可用

>>> sys.modules['custom'] = type(
...     'Module', (),
...     {'MyPagelet': MyPagelet})()

通过ZCML使其可用

>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="class.html"
...       for="*"
...       permission="zope.Public"
...       class="custom.MyPagelet"
...       />
... </configure>
... """, context)

获取页面组件

>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='class.html')
>>> pagelet
<gocept.pagelet.zcml.MyPagelet object at 0x...>
>>> pagelet.render()
u'Hello from the custom pagelet.'

类和模板

当然,也可以同时指定类和模板。因此创建另一个页面组件类并注册它

>>> class MyPagelet2(BrowserPagelet):
...     """Custom pagelet"""
...     i_am_very_custom = True
>>> sys.modules['custom'] = type(
...     'Module', (),
...     {'MyPagelet': MyPagelet2})()

通过ZCML使其可用

>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="class-template.html"
...       for="*"
...       permission="zope.Public"
...       class="custom.MyPagelet"
...       template="test-template.pt"
...       />
... </configure>
... """, context)
>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='class-template.html')
>>> pagelet
<gocept.pagelet.zcml.MyPagelet2 object at 0x...>
>>> pagelet.render()
u'Hello from the test template.\n'
>>> pagelet.i_am_very_custom
True

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

gocept.pagelet-2.0.tar.gz (9.2 kB 查看哈希值)

上传时间

构建分发

gocept.pagelet-2.0-py2.py3-none-any.whl (9.7 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面