我有一个容器 x,其中一个链接项目 y 设置为显示。如果我知道 x,我如何以编程方式访问 y?
我试过: getattr(x, 'default_page', None)
,但它总是返回 None 。
通过使用getattr
,您可以覆盖有关如何确定对象(项目或容器)的默认页面的 plone 默认行为。
Plone 中的内容对象继承BrowserDefaultMixin
,它提供了获取对象默认页面的功能
mixin,分别是 mixin 使用的实用程序,提供了所需的方法,称为getDefaultPage
>>> x = b.getObject()
>>> x.getDefaultPage()
...
这将返回正确的content object
或view
取决于对象、FTI 和视图本身等的配置。
查看get_default_page
更多详细信息。
甚至更好......这种获取默认页面的规范方式也有助于快速找到您的问题,因为该方法会进行某些检查以确保传递的对象提供正确的“功能”。字符串不会通过这些检查。
default_page = getattr(x, 'default_page', None)
是答案。但是要确保你有一个 x 的对象。
我的错误是我b.getObject().absolute_url()
在查询中尝试了而不是b.getObject()
.