在 Plone 中,在视图类实例中添加成员变量会自动使其成为视图获取链的一部分。问题在这里详细描述:
处理此问题的建议方法是什么
我们可以在没有隐式获取的情况下拥有基于 Plone 主模板的视图吗
那么viewlet 和portlet 渲染器呢?
如果不是......应该如何处理这个问题,以便 self.xxx 变量不会获得额外的采集包装?
在 Plone 中,在视图类实例中添加成员变量会自动使其成为视图获取链的一部分。问题在这里详细描述:
处理此问题的建议方法是什么
我们可以在没有隐式获取的情况下拥有基于 Plone 主模板的视图吗
那么viewlet 和portlet 渲染器呢?
如果不是......应该如何处理这个问题,以便 self.xxx 变量不会获得额外的采集包装?
用于Acquisition.aq_inner()
剥离额外的包装并将对象恢复到其原始路径。请不要使用您链接到的文档中描述的单项列表方法。
显示链接文档中的一个示例,但使用以下内容进行了更正aq_inner()
:
from Acquisition import aq_inner
self.obj = self.context.reference_catalog.lookupObject(value)
return aq_inner(self.obj).absolute_url() # Acquistion chain corrected
或者,您可以使用以下aq_inner
属性:
self.obj = self.context.reference_catalog.lookupObject(value)
return self.obj.aq_inner.absolute_url() # Acquistion chain corrected
但这仅适用于继承自Acquisition.Explicit
or的对象Acquisition.Implicit
;aq_inner()
如果它不是 Acquisition 包装的对象,则该函数将逐字返回传递的参数。