到期Django中会话的特定值

时间:2014-09-17 07:05:29

标签: python django session

当访问者看到特定页面时,我会在我的网站上显示一个时事通讯。我想每两周才展示一次。在文档中,我找到了关于会话的this和set_expiry。

所以我尝试执行以下操作(示例使用5秒而不是两周):

def example(request):
    request.session['newsletter'] = 'test'
    request.session.set_expiry(5)

但问题是:

1 - set_expiry仅在有5秒不活动时才有效(在这种情况下,它意味着没有会话修改)。在我的情况下,我想禁用此行为。

2 - set_expiry清除会话的所有值。我希望它只清除新闻通讯的价值。

我无法找到实现这一目标的方法。有没有正确的方法呢?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

set_expiry处理整个会话的到期时间,而不仅仅是变量' newsletter'。

在您的情况下,最好的做法可能是通过确保会话至少持续两周来创建会话。因此,您应该至少将到期时间设置为两周。然后,您可以使用此会话来执行所有类型的操作,包括简报业务。处理请求时,请执行以下操作:

  • 如果会话没有'时事通讯'字段,创建它并将其设置为datetime.now()。还会显示简报弹出窗口。
  • 如果它有一个不到两周的时事通讯字段,则什么都不做。
  • 如果它有两周或更长时间的简报字段,请显示弹出窗口并再次将字段设置为datetime.now()