在另一个grok视图中使用参数self.context和self.request实例化“grok视图”

时间:2013-05-21 18:30:32

标签: plone grok

我的网站产品的代码如下:

class AClass(grok.View):
    """ Code of AClass """
    pass

class BClass(AClass):
    """ Code of BClass with 'update' method defined """
    pass

class CClass(BClass):
    def update(self):
        self.panel = BClass(self.context, self.request)
        # more code     

我怀疑是BClassCClass代码中使用两个参数(self.contextself.request)进行实例化/调用的原因。 BClass有一个没有其他参数的更新方法(仅self),并且没有明确的__init__方法。 那么,self.contextself.request在这种情况下的作用是什么?这是一种继承还是收购?

之后我看到了这一点,我想我并没有完全理解Plone中无处不在的上下文和容器概念。

1 个答案:

答案 0 :(得分:3)

对于BClass的两个子类都没有任何意义,并且将BClass作为实例。我不明白第self.panel = BClass(self.context, self.request)行应该达到什么目的。

语境和容器绝不是无所不在的。上下文是您正在查看的对象。它在类__init__方法中设置。容器是上下文的属性,通常为__parent__