6

现在我有一个基于类的视图。我想在这个视图中设置cookie,但是我可以得到响应,但是响应是在get方法中返回的。所以我不能将cookie设置为响应。所以如何在基于类的视图中获取响应

 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
4

1 回答 1

13

您不能在 a上设置 cookie request,只能在 上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. 您可能需要重构以获取您想要设置的 cookie render_to_response

于 2013-09-18T15:23:22.580 回答