Django视图:get_context_data()vs get()

时间:2016-03-06 08:51:15

标签: django django-forms django-views

我们可以在Django中这样做:

class LoginView(generic.FormView):

    def get_context_data(self, **kwargs):
        common = CommonView(self, **kwargs)
        context = super(LoginView, self).get_context_data(**kwargs)
        context['common'] = common.infos

或:

class LoginView(generic.FormView):

    def get(self, request, *args, **kwargs):
        common = CommonView(self, **kwargs)
        return render(request, self.template_name, {'common': common.infos })

哪一个更好,为什么?

2 个答案:

答案 0 :(得分:3)

使用get_context_data()很有意思,因为它只有一个目标(做一件事并做得好):将数据传递给模板。

另一方面,get()有许多任务要做,以便最终返回HttpResponseget()应该是方法调用的骨架,委派任务。其中,您有get_context_data(),其他人根据您继承的类别。

只要有可能,我认为让父类处理get()post(),...方法并使用它们提供的便利方法会更好。< / p>

就我而言,我自己处理get()方法的唯一情况是编写通用视图。

答案 1 :(得分:1)

他们都不是“更好”。我会说这取决于您需要做的事情。所有请求方法(get_context_data()post)都会调用get,因此如果您需要每次都有一些数据可用,请使用get_context_data()。如果您只需要特定请求方法的数据(例如get),请将其放入get