将登录(请求,用户)功能与默认数据库以外的数据库一起使用-Django?

With using login(request, user) function with a database other than default - Django?

使用非默认数据库的登录(请求,用户)函数 - Django?

user = authenticate(username=username, password=password)
login(request, user)

有没有可能

The request's session was deleted before the request completed. The user may have logged out in a concurrent request, for example.

DATABASES = {
    'default':{
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),},
    'mw': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '01_sistema',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

我创建了一条路线,它与查询完美配合。但是使用函数登录(请求,用户)不起作用。

class TenantRouter(object):

    def db_for_read(self, model, **hints):
        return get_thread_local('using_db', 'default')

    def db_for_write(self, model, **hints):
        return get_thread_local('using_db', 'default')

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        return True

中间件

def Multidb(get_response):
    def middleware(request):
        try:
            usuario = request.user
            empresa = usuario.empresa
            print('0')
        except:
            empresa = request.GET['empresa']
            print('1')

        @thread_local(using_db=empresa)
        def execute_request(request):
            return get_response(request)
        response = execute_request(request)
        return response
    return middleware

整个问题是登录部分没有注册,因为登录(请求,用户)中的错误

谢谢大家的关注。

def tenant_middleware(get_response):
    def middleware(request):
        host = request.get_host().split(':')[0]
        subdomain = host.split('.')[0]

        response = get_response(request)
        return response
    return middleware


def multidb_middleware(get_response):
    def middleware(request):
        host = request.get_host().split(':')[0]
        subdomain = host.split('.')[0]

        @thread_local(using_db=subdomain)
        def execute_request(request):
            return get_response(request)

        response = execute_request(request)
        return response
    return middleware