Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django如何在基于类的视图中获得响应_Django_Cookies_Django Class Based Views - Fatal编程技术网

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

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)

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

 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)