现在我有一个基于类的视图。我想在这个视图中设置cookie,但是我可以得到响应,但是响应是在get methond中返回的。所以我无法将cookie设置为response.so如何在基于类的视图中获取响应
class MyView(TemplateView):
def get_context_data(self, **kwargs):
context = super(UBaseTemplateView, self).get_context_data(**kwargs)
#in here set cookie,but can get the response
#response.set_cookie("success","success")
return context
答案 0 :(得分:9)
你不能在request
上设置set_cookie,只能在response
上,但burhan-khalid正朝着正确的方向前进。 get_context_data
仅返回字典,因此您无法在那里访问响应。您必须在dispatch
中使用TemplateView
或render_to_response
中的class MyView(TemplateView):
def render_to_response(self, context, **response_kwargs):
response = super(MyView, self).render_to_response(context, **response_kwargs)
response.set_cookie("success","success")
return response
访问它。这是一个例子:
get_context_data
我建议您不要在render_to_response
中执行所有处理代码。您可能需要重构以获取您想要在{{1}}中设置的Cookie。