【问题标题】:Django: How to set a (permanent) cookie, in addition to temp session, in Class based views?Django:除了临时会话之外,如何在基于类的视图中设置(永久)cookie?
【发布时间】:2014-06-11 22:33:22
【问题描述】:

我在我的 Django 应用程序中使用基于类的视图,我在其中返回一个带有所需上下文的 render() 函数,如下所示:

class SignUpView(View):

    def get(self, request):

        # code...

        template = 'pages_fixed/accounts/' + insights.get_user_funnel( self, 'signup_page' )

        context = {
            'plans':          plans,
            'form':           form,
            'restore_inputs': self.request.session['restore_inputs'],
        }

        return render( request, template, context )

我已经在使用 Django 的基于后端的会话机制来存储具有设定到期日期的各种数据(这些数据需要到期)。

此外,我需要能够设置(并稍后读取)一个单独的、更永久的 cookie。我找到了一篇关于使用响应对象执行此操作的帖子,但我将如何在基于类的视图中构造它?不确定从哪里开始,在文档中没有看到任何示例?可能吗?

【问题讨论】:

  • 从基于类的视图中手动调用 render 有点奇怪。那是什么方法?
  • 你好丹尼尔。我用我的典型视图结构的一个更好的例子编辑了我的 Q。谢谢。

标签: python django cookies


【解决方案1】:

这里没有什么复杂的,当然也没有什么不同,因为您使用的是基于类的视图。事实上,您使用 CBV 的方式几乎与基于函数的视图完全相同,并且您可以以完全相同的方式在响应中设置 cookie。

response = render(request, template, context)
response.set_cookie('my_cookie', 'my_cookie_value')
return response

【讨论】:

  • 啊哈,这完全有道理。不知何故,我学会了直接返回 render(),所以答案没有点击。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2014-03-14
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多