如何在Django中更新cookie

时间:2011-04-08 12:41:19

标签: django cookies

在其他语言中,它很容易更新,例如cookie中的过期日期,但我终生无法弄清楚如何在Django中做到这一点!

更新过期日期而不是设置新cookie的原因是我不必在每个页面上进行数据库调用。

编辑: 感谢所有的答案,但似乎对我想要完成的事情有些困惑,所以我会尝试更精确: 设置或获取Cookie不是问题。我想知道的是如何更新已设置的cookie 。 对不起,误会了!

3 个答案:

答案 0 :(得分:14)

在某些时候,对于新用户,您应该设置cookie。 Cookie到期时间通常是每个用户的情况。在Django中,您可以使用以下代码设置cookie年龄:

response = redirect('somewhere') # replace redirect with HttpResponse or render
response.set_cookie('cookie_name', 'cookie_value', max_age=1000)

上述cookie将在用户的浏览器中在1000秒后过期。

还有一个expires属性,您可以在其中指定过期日期。

参考:https://docs.djangoproject.com/en/2.0/ref/request-response/#django.http.HttpResponse.set_cookie

修改

从django源代码中,尝试以下操作:

response = redirect('somewhere') # replace redirect with HttpResponse or render
response.cookies['cookie_name']['expires'] = datetime.today() + timedelta(days=1)

从今天起过去1天。

答案 1 :(得分:3)

访问Cookie:request.COOKIES[..]

设置Cookie:response.set_cookie()

此处有更多信息:django book: Sessions...

答案 2 :(得分:0)

三种方式: 1)

response = render_to_response(template_name, {'data':'data'})
response.set_cookie("cookie_name","test_value")
return response

2Midellware:http://justcramer.com/2007/12/20/set-cookies-without-a-response-in-django/

3)模板中的javascript