【问题标题】:Setting test cookie in generic view in Django在 Django 的通用视图中设置测试 cookie
【发布时间】:2014-06-18 20:17:22
【问题描述】:

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

【问题讨论】:

    标签: python django cookies django-generic-views


    【解决方案1】:

    请参阅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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2011-07-25
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多