轻松连接到ZCML加工机械
z3c.zcmlhook的Python项目详细描述
简介
这个包提供了连接到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 />指令,鉴别器基于 默认情况下为函数的全名。因此,您可以覆盖 上面的函数调用如下:
<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" />
在这里,我们试图将配置操作称为“非常早” 以及配置过程中的“非常晚”。