我有一个现有的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': {}}}
答案 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")