django如何在基于类的视图中获取响应

dja*_*ina 5 django cookies django-class-based-views

现在我有一个基于类的视图.我想在这个视图中设置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
Run Code Online (Sandbox Code Playgroud)

jpr*_*itt 9

你不能set_cookie on request,只有on 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
Run Code Online (Sandbox Code Playgroud)

我建议你不要把所有的处理代码都用在get_context_data.您可能需要重构以获取您想要设置的cookie render_to_response.