在Django通用视图中设置测试Cookie
我想在我的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
的文档:
“因为 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