def _login_user(request, user): if not user.is_active: raise ParseError(u'你的账户有异常,请联系客服%s' % '正午') django_login(request, user) limit = 5 # 如果没有session_key尝试写入5次 while not request.session.session_key: LOG.warn('session is empty, try=%d', limit) for k, v in request.session.iteritems(): LOG.warn('%s = %s', k, v) django_logout(request) django_login(request, user) if not request.session.get('has_session'): request.session['has_session'] = True limit -= 1 if limit < 0: break user.session_key = request.session.session_key user.save() return UserSerializer(user).data