我有: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生成和其他服務將失敗... –