python - 使用登录(请求,用户)功能与默认以外的数据库 - Django?
问题描述
使用登录(请求,用户)功能与默认以外的数据库 - Django?
user = authenticate(username=username, password=password)
login(request, user)
有没有可能
请求的会话在请求完成之前被删除。例如,用户可能已在并发请求中注销。
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',
}
}
我创建了一条路线,它与查询完美配合。但是使用功能 login(request, user) 不起作用。
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
整个问题是由于 login(request, user) 中的错误而未注册登录部分
谢谢大家的关注。
解决方案
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
推荐阅读
- java - 无法启动 Apache TomEE 服务器 - 未找到部署:openejb/Deployer
- c# - 如何从 Program.cs 文件中的 appsettings.json 文件访问数据库连接字符串
- wpf - 对 HTML 和 WPF 视图使用相同的 ViewModel
- pandas - 使用带有自己的函数和参数的 Pandas 数据框 groupby.filter
- c# - .NET Core 没有 OID 值与此名称匹配
- javascript - 节点登录错误:无法获取 /users/auth/login
- winapi - C++ Win32 API - CreateFont():文档示例令人困惑
- r - 在 R 中生成澳大利亚州/领地等值线?
- javascript - 如何从 API 获取结果以存储为全局变量?
- git - 从 branch-a 切换到 branch-b 会更改文件权限。但是将 *back* 恢复到 branch-a 不会 *not* 恢复文件权限。这是为什么?