首页 文章

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

提问于
浏览
0

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

我在Template Context Processor这样做

def shared_values(request):

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

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

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

编辑1:

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

  • 我在第一个浏览器(chrome)中以管理员身份登录并删除所有会话(mydself除外)

  • 编辑上下文处理器,因此我不访问项目中的会话:

show_help = True

  • 在不同的浏览器中打开页面(firefox)

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

编辑2:

我用django 1.4.1

1 回答

  • 0

    Docs

    当SessionMiddleware被激活时,每个HttpRequest对象 - 任何Django视图函数的第一个参数 - 将具有会话属性,这是一个类似字典的对象 .

    所以每次你发出请求 - 如果它已经存在,将创建会话 . 应用 context_processor 时 - 会话已存在 . 你不应该担心这一点 .

相关问题