Reputation: 91
now i have a class-based view. and i want to set cookie in this view,but i can get the response,but the response is returned in the get methond .so i can not set the cookie to response.so how to get Response in class based view
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
Upvotes: 6
Views: 4154
Reputation: 6355
You cannot set_cookie on a request
, only on response
, but burhan-khalid was going in the correct direction. get_context_data
only returns a dictionary, so you cannot access the response there. You have to access it either in dispatch
, or with a TemplateView
, in render_to_response
. Here is an example:
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
I would suggest you shouldn't do all your processing code in get_context_data
. You may need to refactor to get the cookie you want set in render_to_response
.
Upvotes: 13