如何在不创建新会话的情况下检查会话?

时间:2012-10-22 12:28:52

标签: django django-sessions

在我的部分应用程序中,我为访问者提供了一些自定义设置。 当用户加载页面时,我尝试检查请求的自定义设置,如果存在设置,我会在页面中进行自定义。

我在Template Context Processor

中这样做
def shared_values(request):

    show_help = request.session.get('show_help', True)
    return {
        'show_help': show_help,
    }

这是完美的工作,但我有问题 - 每次,当我检查会话时django在Session表中创建新条目,如果之前不存在条目。

如何在不创建新会话的情况下查看会话?

编辑1:

然后我禁用检查会话密钥,我看到django没有为请求创建任何会话条目。

  1. 我在第一个浏览器(chrome)中以管理员身份登录并删除所有会话(mydself除外)
  2. 编辑上下文处理器,因此我不访问项目中的会话:

    show_help = True

  3. 在不同浏览器(firefox)中打开页面

  4. 切换到第一个浏览器并检查是否出现了新的会话对象,但没有任何更改 - 只存在一个会话对象。

  5. 编辑2:

    我使用django 1.4.1

1 个答案:

答案 0 :(得分:0)

Docs

  

激活SessionMiddleware时,每个HttpRequest对象 -   任何Django视图函数的第一个参数 - 将有一个session   属性,这是一个类字典的对象。

因此,每次发出请求时,如果已经存在会话,则会创建会话。 应用context_processor时,会话已存在。你不应该担心这一点。