我有:unrestrictedTraverse获取错误的对象时,有两个相邻的相同的id
try:
path1 = /Plone/s/a
path2 = 2011/07/07
#The path to traverse becomes /Plone/s/a/2011/07/07/. From
#Plone to last 07, they are normal Folders.
ob = self.portal.unrestrictedTraverse('%s/%s/' % (path1, path2))
print ob
except AtributeError:
#do something
pass
/Plone的/ S/A/2011/07/07/不存在。存在/Plone/s/a/2011/07/。上面的代码应该会给出一个AtributeError,但是我得到的却是对象而不是其他类型的对象。它打印:
<ATFolder at /Plone/s/a/2011/07 used for /Plone/s/a/2011/07>
我不想从遍历中得到“相似”的结果,这是错误的。我特别需要/Plone/s/a/2011/07/07/。如果它不存在,我想赶上例外。
我可以使用哪些其他的办法,看看是否有在/Plone的/ S是一个对象正好/ A/2011/07/07/,而不是足够接近像/Plone的/ S/A/2011/07/?
当然你得到你的参数向后: '年= aq_base(GETATTR( '2011',A))' 应该是: '年= aq_base(GETATTR(一, '2011'))' 否则,好吧。 OP可能不喜欢它,但收购是Zope的重要组成部分,如果我们停止使用它,一大堆东西就会崩溃! – Auspex
@marcosfromero:我知道这将是收购,我只是想知道我该如何解决这个问题。因此,而不是使用unrestrictedTraverse,我可以使用aq_base和getattr。你发布的片段真的很自我解释。它是一个很好的解决方案。而且我知道收购至关重要@Auspex,并感谢您的更正。 –
一天现在没有收购上下文和绝对的URL生成和其他服务将失败... –