1

阅读https://pypi.python.org/pypi/five.pt/2.2.1

  To enable Chameleon, configure the package using ZCML:

   <include package="five.pt" />

Chameleon 模板是按包启用还是全局启用?说明很少。

如果我只想为特定软件包启用 Chameleon,可以吗?(使迁移到 Chameleon 更容易)

4

1 回答 1

1

直接从包的 PyPI 页面引用:

它在现有 API(特别是TALInterpreterPageTemplate类)上使用猴子补丁来工作。简单来说,补丁所做的就是替换 TAL 解释器类,并确保所谓的“烹饪”例程使用 Chameleon 解析器和编译器,而不是zope.*参考实现。

因此,当您加载five.pt包时,常规页面模板代码被修补为使用 Chameleon 模板,而不是在模板被煮熟(编译)时。

这确实排除了逐个包启用 Chameleon 和禁用 Chameleon。一旦任何包使用该<include package="five.pt" />指令,five.pt configure.zcml就会加载文件并应用补丁。

也就是说,理论上应该可以将每个包的启用或禁用添加回补丁中;必须教授实用程序__call__cook方法如何检测模板适用于哪个包,并决定使用哪个类和页面模板对象。five.pt ProgramRepeatDict

于 2013-05-11T15:14:47.120 回答