Python Django在不同数据库中共享用户会导致500和403错误 目标
我希望Doccano使用我的主应用程序(app2)中保存的用户作为自己的用户,而不是Doccano使用自己的用户。这两个都是Django数据库,所以我假设这些不是Doccano特有的问题 问题 用户之间的连接工作正常,我可以用app2用户登录Doccano。 在/projects页面中,网站上出现Python Django在不同数据库中共享用户会导致500和403错误 目标,python,django,postgresql,doccano,Python,Django,Postgresql,Doccano,我希望Doccano使用我的主应用程序(app2)中保存的用户作为自己的用户,而不是Doccano使用自己的用户。这两个都是Django数据库,所以我假设这些不是Doccano特有的问题 问题 用户之间的连接工作正常,我可以用app2用户登录Doccano。 在/projects页面中,网站上出现500内部服务器错误,终端app2打印:错误:关系“api\u project”在字符363处不存在 创建新项目时,在发布到/v1/projects 我所做的 我目前正在其容器中运行Doccano后端、
500内部服务器错误
,终端app2打印:错误:关系“api\u project”在字符363处不存在
创建新项目时,在发布到/v1/projects
我所做的
我目前正在其容器中运行Doccano后端、nginx和postgres,并在容器中运行app2和postgres\u app2
。Doccano后端与Doccano postgres共享一个(docker compose)网络,与postgres_app2
共享另一个网络。
doccano/app/app/settings.py
既有数据库又有到路由器的链接:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': path.join(BASE_DIR, 'db.sqlite3'),
},
"app2_db": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "postgres",
"USER": os.getenv("POSTGRES_USER", "user_app2"),
"PASSWORD": os.getenv("POSTGRES_PASSWORD", "pass_app2"),
"HOST": "postgres",
"PORT": 5432,
}
}
DATABASE_ROUTERS = ['app.authRouter.AuthRouter']
使用AuthRouter.py
如下所示:
# AuthRouter.py
class AuthRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'auth' or model._meta.app_label == 'authtoken':
return 'app2_db'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'auth' or model._meta.app_label == 'authtoken':
return 'app2_db'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'auth' or obj1._meta.app_label == 'authtoken' or \
obj2._meta.app_label == 'auth' or obj2._meta.app_label == 'authtoken':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'auth' or app_label == 'authtoken':
return db == 'app2_db'
return None