Plone 实例化一个;格罗克视图“;在另一个grok视图中使用参数self.context和self.request
我有一个网站产品,代码如下:Plone 实例化一个;格罗克视图“;在另一个grok视图中使用参数self.context和self.request,plone,grok,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,
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
我的疑问是,为什么BClass
在CClass
代码中实例化/调用了两个参数(self.context
和self.request
)。
BClass
有一个不带其他参数的更新方法(只是self
),并且没有显式的\uuuuuuu init\uuuu
方法。
那么,在这种情况下,self.context
和self.request
的功能是什么?这是一种继承还是获得
在看到这一点之后,我认为我没有完全理解Plone中无处不在的上下文和容器概念。从BClass中创建子类并将BClass作为实例是没有意义的。我不明白这行
self.panel=BClass(self.context,self.request)
应该实现什么
上下文和容器决不是无所不在的。上下文是您正在查看的对象。它是在class
\uuuu init\uuuu
方法中设置的。容器是上下文的一个属性,通常是\uuuu parent\uuuu
它对来自BClass的子类和将BClass作为实例都没有意义。我不明白这行self.panel=BClass(self.context,self.request)
应该实现什么
上下文和容器决不是无所不在的。上下文是您正在查看的对象。它是在class
\uuuu init\uuuu
方法中设置的。容器是上下文的一个属性,通常是\uuuu parent\uuuu
谢谢,@Lennart Regebro!我以前从未用参数实例化过grok视图。我查看了grok文档(),发现grok.View
确实接受self.context
和self.request
作为“构造函数”参数。通常情况下,我总是在没有参数的情况下实例化grok.View
,并且从不在另一个视图中实例化视图。这是一个好的模式吗?非常感谢,很抱歉我的问题不清楚。@LeonardoAndrade:很少需要实例化视图。我的猜测是,无论何时实例化一个视图,都是做错了什么。视图由发布者在对象上实例化。谢谢@Lennart Regebro!我以前从未用参数实例化过grok视图。我查看了grok文档(),发现grok.View
确实接受self.context
和self.request
作为“构造函数”参数。通常情况下,我总是在没有参数的情况下实例化grok.View
,并且从不在另一个视图中实例化视图。这是一个好的模式吗?非常感谢,很抱歉我的问题不清楚。@LeonardoAndrade:很少需要实例化视图。我的猜测是,无论何时实例化一个视图,都是做错了什么。视图由发布者在对象上实例化。