在Django中的通用视图中设置测试cookie

时间:2014-06-18 11:39:29

标签: python django cookies django-generic-views

我想在我的CreateView中设置一个测试cookie,并且能够在form_valid函数中获得测试结果(在发送表单后)。

我应该在哪里设置负责设置cookie的代码?

self.request.session.set_test_cookie()

我试图覆盖get_form_kwargs并将其放在那里,但它没有用。

我的代码:

class MyView(CreateView):
    def form_valid(self, form):
        if not self.request.session.test_cookie_worked():
            pass
        else:
            pass

1 个答案:

答案 0 :(得分:2)

请参阅test_cookie_worked的文档:

https://docs.djangoproject.com/en/1.6/topics/http/sessions/#django.contrib.sessions.backends.base.SessionBase.test_cookie_worked

"由于Cookie的工作方式,您必须在之前单独的页面请求中调用set_test_cookie()。"

因此,我建议set_test_cookie视图中的get方法:

class MyView(CreateView):
    def get(self, request, *args, **kwargs):
        self.request.session.set_test_cookie()
        super(MyView, self).get(request, *args, **kwargs)

    def form_valid(self, form):
        if not self.request.session.test_cookie_worked():
            pass
        else:
            pass