Django创建会话

时间:2015-12-22 05:00:24

标签: python django session

我有一个现有的Django应用程序,其中启用了会话中间件。

当我查看代码时,我没有看到任何会话明确保存的地方(如下所示)来创建新会话。

request.session['foo'] = 'bar'

即使它没有明确保存,我仍然会在创建用户后看到正在创建的会话对象。

创建用户后是否可以创建会话。该应用程序使用django allauth进行身份验证。

当我解码我的会话对象时,它就是它的外观......

{u'_auth_user_backend': u'django.contrib.auth.backends.ModelBackend',
 u'_auth_user_hash': u'df0df84cd5f03676a8756c06fbe6816b9082773d',
 u'_auth_user_id': 21,
 u'otp_device_id': u'two_factor.models.PhoneDevice/30',
 u'wizard_login_view':
     {u'extra_data': {},
      u'step': None,
      u'step_data': {},
      u'step_files': {},
      u'validated_step_data': {}}}

1 个答案:

答案 0 :(得分:0)

创建后信号对此有利:

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.db import models
from django.contrib.sessions.backends.db import SessionStore

def write_session(sender, **kw):
    s = SessionStore()
    s['foo']="bar"
    s.save()
    s.session_key # gives '2b1189a188b44ad18c35e113ac6ceead'
    s = SessionStore(session_key='2b1189a188b44ad18c35e113ac6ceead')
    s['foo'] # gives "bar"

post_save.connect(write_session, sender=User, dispatch_uid="users-writesession-signal")