Django 1.5会话密钥为无

sup*_*er9 12 django

出于某种原因,{{ request.session.session_key }}在模板中进行操作会给我一个None价值.经过一番搜索,发现这篇文章提到了使用,request.session._session_id但在模板中使用它给了我一个错误:

变量和属性不能以下划线开头:'request.session._session_key'

我对Django中会话的理解是,当用户加载页面(任何页面)时,即使他是匿名的,也会将session_id分配给该特定会话.我的理解是错的吗?这是应该使用的 地方[SESSION_SAVE_EVERY_REQUEST]吗?

我正在使用数据库后端作为我的会话存储.

sup*_*er9 31

回答我自己的问题:

仍然可以使用访问会话密钥{{ request.session.session_key }}.但是,文档提到只有在保存/修改会话时才会创建会话.

默认情况下,Django仅在会话被修改时保存到会话数据库 - 即,如果已分配或删除任何字典值:

所以在我的情况下,会话没有被设置,因为我没有操纵它.使用SESSION_SAVE_EVERY_REQUEST将确实解决全球问题.在我的用例中,我只需要在特定的视图函数上,所以这是一个简单的事情:

if not request.session.get('has_session'):
    request.session['has_session'] = True
Run Code Online (Sandbox Code Playgroud)