在zope组件系统中有没有什么简单的方法可以列出所有的视图(以及它们的名字),这些视图是为特定的接口(如IMyInterface)注册的?
<browser:page
name="content-item-plain"
for=".interfaces.IMyInterface"
class=".content_item.MyView"
permission="zope2.View"
layer="my.model.browser.interfaces.IMyModelLayer"
template="templates/content_item_plain.pt"
/>class MyView(BrowserView):
implements(ISomeInterface)或者,更好的是,实现特定接口(ISomeInterface)的那些接口?
结果应该是类的列表/元组(MyView,MyView1,...)和/或名称("content-item-plain",...)。
如果有帮助,将classImplements/classProvides添加到MyView类是没有问题的。
到目前为止,已经尝试了很多方法。最近的是这样的:
from zope.component import getGlobalSiteManager
gsm = getGlobalSiteManager()
gsm.adapters.lookupAll((IMyInterface, IMyModelLayer), provided=Interface))但是它提供了太多的结果,并且将provided更改为更具体的值会使其返回空元组。
有了结果,应该可以查找视图类属性。
发布于 2012-02-02 23:29:53
是。
获取列表:
http://docs.plone.org/develop/plone/views/browserviews.html#listing-available-views
然后以你想要的方式过滤掉。
https://stackoverflow.com/questions/9111071
复制相似问题