从dispatch方法访问context_data
我在使用基于类的视图(DetailView)时,想从 dispatch 方法获取 context_data,但遇到了一些问题。系统报错,提示信息是:'ClientView' 对象没有属性 'object'
。我是不是漏掉了什么?
class ClientView(LoginRequiredMixin, DetailView):
model=Client
template_name='core/client.html'
def get_context_data(self, **kwargs):
context = super(ClientView, self).get_context_data(**kwargs)
# doing something with the context
return context
def dispatch(self, request, *args, **kwargs):
context = self.get_context_data()
# doing something with the context
return super(ClientView, self).dispatch(request, *args, **kwargs)
-- 编辑 --
处理 AJAX 或普通请求的地方不是 dispatch
或 get
,而是 render_to_response
。这个方法已经把上下文作为参数传递过来了。
1 个回答
2
通过重写 dispatch
方法并直接调用 get_context_data
,你绕过了正常的视图处理流程。实际上,self.object
这个对象直到调用 get
方法时才会被定义。
我怀疑你其实并不需要重写 dispatch
方法。能不能解释一下你为什么需要这么做?