我向Plone 4.3添加了plone.app.referenceablebehavior,创建了一个TTW类型并使其可引用:
然后我在站点根目录中创建了一个名为“My Referenceable Type Instance”的实例,并在调试模式下尝试了以下内容:
>>> from plone.app.referenceablebehavior.referenceable import IReferenceable
>>> IReferenceable.providedBy(app.Plone['my-referenceable-type-instance'])
False
我希望结果是 True 。这是一个错误,还是我错过了什么?
[0]我的扩建:
[buildout]
extends = https://raw.github.com/pythonpackages/buildout-plone/master/4.3.x-dev
[plone]
eggs +=
plone.app.referenceablebehavior
答案 0 :(得分:4)
在调试会话中,您需要在尝试此操作之前设置本地站点管理器。尝试:
>>> from zope.component.hooks import setSite
>>> setSite(app.Plone)
...在尝试检查对象是否提供IReferenceable之前。这是必要的原因是Dexterity使用称为对象规范描述符的东西,它从类型的工厂类型信息中动态查找接口,这是特定于站点的(如果没有先配置本地站点,则无法检索特定于站点的配置)查找)。