跳转到主要内容

轻松钩入ZCML处理机制

项目描述

简介

此软件包提供了将配置过程(Zope(ZCML))钩入的手段。

自定义ZCML操作

有时在执行配置动作期间执行一个函数是有用的,例如执行一次性的配置而不需要新的指令。为此提供了 <zcml:customAction /> 指令。

例如,您可能希望在配置动作执行周期中“晚些时候”调用名为 my.package.finalConfiguration() 的函数。这可以通过以下ZCML语句实现

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="my.package">

    <include package="z3c.zcmlhook" file="meta.zcml" />

    <zcml:customAction
        handler="my.package.finalConfiguration"
        order="9999"
        />

</configure>

“handler”属性指定要执行的函数名称。该函数不应接受任何参数。“order”属性是可选的,可以用来影响函数在配置周期中的执行顺序。对于大多数Zope配置操作,默认值都是“0”。

覆盖自定义操作

如果您想在“overrides.zcml”中覆盖自定义处理程序的调用,需要通知“zope.configuration”要覆盖哪个处理程序。您可以通过显式设置“discriminator”来实现。判别器用于唯一标识一个配置操作。在``指令的情况下,默认的判别器基于函数的完整点分名称。因此,您可以像这样覆盖上面的函数调用

<zcml:customAction
    handler="my.otherpackage.overrideFinalConfiguration"
    discriminator="my.package.finalConfiguration"
    order="9999"
    />

多次使用处理程序

“discriminator”属性也可以用来显式允许使用同一个处理程序多次。如果您想再次调用`my.package.finalConfiguration`,通常会得到配置冲突。然而,通过一个(唯一的)自定义判别器,第二次调用是被允许的

<zcml:customAction
    handler="my.package.finalConfiguration"
    discriminator="my.package.finalConfiguration:early"
    order="-9999"
    />

<zcml:customAction
    handler="my.package.finalConfiguration"
    discriminator="my.package.finalConfiguration:late"
    order="9999"
    />

这里,我们试图在配置过程“非常早”和“非常晚”时调用我们的配置操作。

变更日志

2.0 (2023-02-24)

  • 添加对Python 3.10和3.11的支持。

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

1.1 (2021-02-15)

  • 添加对Python 3.5、3.6、3.7、3.8和3.9的支持。

  • 添加测试额外功能以声明对`zope.component [test]`的测试依赖。[icemac]

1.0b1 (2010-01-02)

  • 初始发布 [optilude]

项目详情


下载文件

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

源分发

z3c.zcmlhook-2.0.tar.gz (8.3 kB 查看哈希值)

上传时间

构建分发

z3c.zcmlhook-2.0-py3-none-any.whl (7.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

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