我知道有几种通用视图,例如ListView
,DetailView
或只是View
。
问题是,我真的可以获取在BaseMixin
的get_context_data()
中声明的上下文数据,并在没有覆盖get_context_data()
的视图中使用它吗?
例:
class BaseMixin(object):
def get_context_data(self, *args, **kwargs):
context = super(BaseMixin, self).get_context_data(**kwargs)
context['test'] = 1
return context
扩展此
BaseMixin
的视图:class FooView(BaseMixin, View):
def foo(self, request):
context = super(BaseMixin, self).get_context_data(**kwargs)
# do something
return
即使将
**kwargs
用作foo()
中的参数,该操作实际上也不起作用。错误是'super' object has no attribute 'get_context_data'
。那么有没有办法获取在
BaseMixin
的FooView
中设置的上下文数据?感谢您的回答:)
最佳答案
感谢@Sayes和所有回答者,我终于解决了这个问题。
根据我的发现,问题实际上出在BaseMixin
中,BaseMixin
的继承类(object
)没有get_context_data()
函数,就像@Sayes注释的一样。
将object
替换为ContextMixin
之后,一切都可以正常运行,至少目前还可以。
这是修改后的BaseMixin
:
class BaseMixin(ContextMixin):
def get_context_data(self, *args, **kwargs):
# do something
return context