以下浏览器视图应该在其上下文中返回第一个Plone网站首页的内容。但是,我似乎无法获得能够呈现html内容的对象。
from Products.Five import BrowserView
from zope.component import getMultiAdapter
class RenderFirst (BrowserView):
def __call__ (self):
def findPlones (context):
plones = context.objectValues("Plone Site")
folders = context.objectValues("Folder")
folders = set(folders).difference(set(plones))
for folder in folders:
plones += findPlones(folder)
return plones
plones = findPlones(context)
if len(plones):
default_page = plones[0].getDefaultPage()
content = plones[0].unrestrictedTraverse (default_page)
view = getMultiAdapter ((content, self.request))
return view()
else:
return "no plone"
运行时的前一个代码告诉我对象视图不可调用。
plones[0]
是一个Plone Site对象,调用后会为KeyError
生成folder_listing
如果我拨打content
对象,我会AttributeError
document_view
这里有很多组合,可以调用不同对象的不同适配器。尚未找到可以呈现页面的正确对象。有谁知道怎么做?
答案 0 :(得分:3)
当我在pdb中尝试这个时,一个简单的plones[0]()
可以正常工作。
答案 1 :(得分:1)