django如何在基于类的视图中获得响应
现在我有了一个基于类的视图。我想在这个视图中设置cookie,但是我可以得到响应,但是响应是在get方法中返回的。所以我不能将cookie设置为response。那么如何在基于类的视图中得到响应呢django如何在基于类的视图中获得响应,django,cookies,django-class-based-views,Django,Cookies,Django Class Based Views,现在我有了一个基于类的视图。我想在这个视图中设置cookie,但是我可以得到响应,但是响应是在get方法中返回的。所以我不能将cookie设置为response。那么如何在基于类的视图中得到响应呢 class MyView(TemplateView): def get_context_data(self, **kwargs): context = super(UBaseTemplateView, self).get_context_data(**kwargs)
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
您不能在
请求
上设置cookie,只能在响应
上设置cookie,但burhan khalid的方向是正确的get\u context\u data
只返回一个字典,因此您无法访问那里的响应。您必须在dispatch
中访问它,或者在render\u to\u response
中使用TemplateView
访问它。以下是一个例子:
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\u context\u data
中完成所有处理代码。您可能需要重构以获得您想要在render\u to\u response
中设置的cookie,这很好。我的问题是我想在cooke中的post_context_数据中设置一个标志来标记操作成功或失败,然后在get_context_数据中从cookie中获取标志并在template中显示消息您可以在github中看到我的代码。这是我的所有基于类的视图结构。你能给我一些建议吗?这个UUBOG都使用基于类的视图。你想在哪里设置标志?您可以在任何地方这样设置它:self.success='success'
然后在get\u context\u data
中,您可以像这样将它添加到模板的上下文中:context['success']=self.success
然后在render\u-to\u-response
中,当您设置cookie时,只需执行response.set\u cookie(“success”,self.success)