Django Tenants安装与配置指南
1. 项目目录结构及介绍
Django Tenants是一个用于使Django项目支持多租户的扩展,它利用PostgreSQL的schema特性来实现。下面是该开源项目的典型目录结构概览:
django-tenants/
├── CHANGES.rst # 版本变更记录
├── Dockerfile # Docker构建文件
├── examples # 示例项目目录
│ └── ... # 包含示例应用的代码
├── LICENSE # 许可证文件
├── MANIFEST.in # 构建时包含的额外文件清单
├── README.rst # 项目简介与快速指引
├── requirements.txt # 项目依赖列表
├── run_tests.sh # 运行测试脚本(非容器环境)
├── run_tests_in_docker.sh # 在Docker环境下运行测试的脚本
├── setup.py # Python包的设置文件,用于发布到PyPI
├── docs # 文档目录,包含了详细的手册
│ ├── ...
├── dts_test_project # 测试项目的示例
├── gitignore # Git忽略文件配置
└── django_tenants # 源码目录,包含所有必要的模型、中间件和路由器等
├── __init__.py
├── ...
- django_tenants: 核心源代码,包括模型、中间件和数据库路由。
- docs: 包含详细的使用文档和教程。
- examples: 提供运行实例的教学代码,便于理解如何集成进Django项目。
- tests: 相关测试案例以确保项目功能完整。
2. 项目的启动文件介绍
在使用Django Tenants时,实际上没有一个特定的“启动文件”是该项目独有的。不过,在您的Django应用中,需要对几个关键设置进行调整以启用多租户支持。这些更改通常发生在你的settings.py
文件中:
- 更新
DATABASES
配置,指定使用django_tenants.postgresql_backend
作为引擎。 - 添加
django_tenants.middleware.main.TenantMainMiddleware
到MIDDLEWARE
列表顶部,以处理每个请求并选择正确的数据库模式。 - 修改
DATABASE_ROUTERS
添加django_tenants.routers.TenantSyncRouter
来控制数据同步。 - 确保
django_tenants
添加到了INSTALLED_APPS
列表里。
DATABASES = {
'default': {
'ENGINE': 'django_tenants.postgresql_backend',
# 其他数据库配置...
}
}
MIDDLEWARE = (
'django_tenants.middleware.main.TenantMainMiddleware',
# 其他中间件...
)
DATABASE_ROUTERS = ('django_tenants.routers.TenantSyncRouter',)
INSTALLED_APPS = [
# ...其他app,
'django_tenants',
]
3. 项目的配置文件介绍
配置多租户的关键在于修改Django的标准设置。以下是需要关注的重要配置部分:
-
数据库设置 (
DATABASES
): 需要确保指向支持多租户特性的PostgreSQL数据库,并且使用django_tenants.postgresql_backend
作为数据库引擎。 -
中间件 (
MIDDLEWARE
): 必须包含django_tenants.middleware.main.TenantMainMiddleware
,以便于每个HTTP请求被正确地路由到对应的数据库模式。 -
数据库路由器 (
DATABASE_ROUTERS
): 配置DATABASE_ROUTERS
来添加django_tenants.routers.TenantSyncRouter
,这是管理共享和租户特定数据库表的关键。 -
INSTALLED_APPS:
django_tenants
自身需要被加入到已安装的应用列表中,同时可能还需要创建或定制租户模型和其他特定的应用。
此外,根据需求,您可能还需要自定义模板上下文处理器以传递租户信息,以及适当地组织您的模型和视图来服务于不同的租户。记得调整您的模型和视图,确保它们能够正确区分和处理共享与租户专属的数据。