Django 视图:get_context_data() 与 get()
Django view: get_context_data() vs get()
我们可以在 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 })
哪个更好,为什么?
None 个是 "better"。我会说这取决于你需要做什么的场景。 get_context_data()
为所有请求方法(post
、get
)调用,因此如果您需要每次都有一些数据可用,请使用 get_context_data()
。如果您只需要特定请求方法的数据(例如 get
),则将其放入 get
.
使用 get_context_data()
很有趣,因为它只有一个目标(做一件事并做好):将数据传递给模板。
另一方面,get()
有许多任务要做才能最终 return 一个 HttpResponse
。 get()
应该是方法调用的骨架,委派任务。其中,你有get_context_data()
,其他的根据你继承的class
只要可能,我认为最好让父class(es)处理get()
、post()
、...方法并使用他们提供的便捷方法。
就我而言,我必须自己处理 get()
方法的唯一情况是在编写通用视图时。
我们可以在 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 })
哪个更好,为什么?
None 个是 "better"。我会说这取决于你需要做什么的场景。 get_context_data()
为所有请求方法(post
、get
)调用,因此如果您需要每次都有一些数据可用,请使用 get_context_data()
。如果您只需要特定请求方法的数据(例如 get
),则将其放入 get
.
使用 get_context_data()
很有趣,因为它只有一个目标(做一件事并做好):将数据传递给模板。
另一方面,get()
有许多任务要做才能最终 return 一个 HttpResponse
。 get()
应该是方法调用的骨架,委派任务。其中,你有get_context_data()
,其他的根据你继承的class
只要可能,我认为最好让父class(es)处理get()
、post()
、...方法并使用他们提供的便捷方法。
就我而言,我必须自己处理 get()
方法的唯一情况是在编写通用视图时。