2013-05-04 47 views
12

由于某种原因,在模板中执行{{ request.session.session_key }}会给我一个None的值。经过一番搜索,遇到使用request.session._session_id,但使用该模板,所提到给我一个错误this postDjango 1.5会话密钥是无

Variables and attributes may not begin with underscores: 'request.session._session_key'

我在Django会议的理解是,当下一个用户加载一个页面(任何页面),甚至如果他是匿名的,则会将session_id分配给该特定会话。我的理解错了吗?还有,using[SESSION_SAVE_EVERY_REQUEST]应该进来吗?

我使用数据库后端作为会话存储。

回答

30

要回答我的问题:

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

By default, Django only saves to the session database when the session has been modified – that is if any of its dictionary values have been assigned or deleted:

所以在我的情况下,会议没有被设置,因为我没有操纵它。使用SESSION_SAVE_EVERY_REQUEST确实可以解决全球范围内的问题。在我的使用案例中,我只需要它在一个特定的视图功能,所以这是一个简单的事情做到这一点:

if not request.session.get('has_session'): 
    request.session['has_session'] = True 
+0

好听点儿。 – 2013-05-13 14:23:06

相关问题