【问题标题】:How can I tell if a Django session is new?如何判断 Django 会话是否是新的?
【发布时间】:2012-08-23 10:01:27
【问题描述】:

在视图中,是否有一种简单的方法可以判断这是否是会话中的第一个命中?

我寻找了一些明显的东西,比如将 session-create-date 与 session-last-accessed-date 进行比较,但这些字段似乎不存在。

我可以在会话数据中设置一个自定义键,然后如果缺少该键,则假定它是一个新会话,但我想知道是否有更简洁的方法。

谢谢!

【问题讨论】:

标签: django session


【解决方案1】:

您如何通过settings.SESSION_COOKIE_AGE 减去my_session.get_expiry_age() 来计算它。越接近 0,会话越新。不确定尽管对于首次点击会话而言这始终为零。

【讨论】:

  • 是的,我也想过。但就像你说的那样,新会话的差异不能保证为零。
  • 除此之外,我没有看到内置的方法来做到这一点。您也许可以找到解决方法,扩展会话模型(数据库会话)或将会话创建保存在其他地方。另一个想法是在会话中保存一个标志(在创建时),一个布尔值或您在第一次使用会话时切换的东西。
【解决方案2】:

您可以使用 session_key。如果 request.session.session_key 为 None,则表示 session 对象是新的,尚未保存到数据库中。

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2010-09-25
    • 2011-04-16
    相关资源
    最近更新 更多