在Django通用视图中设置测试Cookie

0 投票
1 回答
864 浏览
提问于 2025-04-18 10:12

我想在我的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 个回答

2

查看关于 test_cookie_worked 的文档:

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

“因为 cookies 的工作方式,你需要在之前的一个单独的页面请求中调用 set_test_cookie()。”

所以我建议在视图的 get 方法中使用 set_test_cookie

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

撰写回答