Django Tenants生产环境租户可见公共模式(public schema)数据的问题求助
Django Tenants生产环境租户可见公共模式(public schema)数据的问题求助
我最近把我的Django应用迁移到了django-tenants,本地测试一切正常——新建租户后完全看不到public schema的专属数据,和预期一致。但是部署到生产环境后出问题了:我创建了一个名为doyang的租户(对应的schema是doyangrlt),数据库里查这个schema的所有表都是空的,但在这个租户的admin后台里,居然能看到public schema里的数据,这完全不符合预期!
以下是我settings.py里的关键配置项,麻烦各位帮忙看看哪里出了问题:
# Application definition SHARED_APPS = [ 'django_tenants', 'tenant_manager', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres', 'django.contrib.sites', 'widget_tweaks', "django_tables2", 'django_filters', 'bot', 'CCDC' ] TENANT_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.postgres', 'django.contrib.sites', 'bot', ] INSTALLED_APPS = SHARED_APPS + [app for app in TENANT_APPS if app not in SHARED_APPS] MIDDLEWARE = [ 'django_tenants.middleware.main.TenantMainMiddleware', 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'tlgrmbot.urls' PUBLIC_SCHEMA_URLCONF = 'tlgrmbot.urls_public' # Database DATABASES = { 'default': { 'ENGINE': 'django_tenants.postgresql_backend', 'NAME': os.environ.get('DB_NAME_BOT'), 'USER': os.environ.get('DB_USER_BOT'), 'PASSWORD': os.environ.get('DB_PWD_BOT'), 'HOST': 'localhost', 'PORT': '5432', } } DATABASE_ROUTERS = ( 'django_tenants.routers.TenantSyncRouter', ) TENANT_MODEL = "tenant_manager.Tenant" TENANT_DOMAIN_MODEL = "tenant_manager.Domain" SHOW_PUBLIC_IF_NO_TENANT_FOUND = True
我已经排查过的点:
- 生产环境的数据库连接配置正确,确实连接到了对应的PostgreSQL实例
- 租户
doyang和对应的Domain记录都已正确创建,schemadoyangrlt也存在且表为空 - 本地环境的配置和生产几乎一致(除了数据库凭据和静态文件相关的whitenoise),但本地完全正常
有没有可能是中间件顺序的问题?或者是路由配置、租户模型的问题?麻烦各位大佬帮忙分析一下,谢谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

