问题描述
Django==1.11.7
django-tenant-schemas==1.8.0
django-allauth==0.34.0
使用Django-Tenant-架构(Postgres)的多租户站点。
对于不同的租户,需要不同的设置。
具体地说,ACCOUNT_EMAIL_VERIFICATION需要不同的设置
一个租户需要ACCOUNT_EMAIL_VERIFICATION = "optional"
,而另一个租户需要ACCOUNT_EMAIL_VERIFICATION ="mandatory"
查看source code,该设置似乎无法自定义,它已针对整个Django站点进行了修复。
->如何做到这一点?
推荐答案
您可以在运行时计算设置,因为它只是一段Python代码。
使用您喜欢的方式以编程方式设置该特定代码。一个例子:# predefine the settings per tenant
ACCOUNT_EMAIL_VERIFICATION_PER_TENANT = {
"tenant_x": "mandatory",
"tenant_y": "optional",
}
# implement get_tenant
def get_tenant():
# here be tenant logic
pass
this_tenant = get_tenant()
ACCOUNT_EMAIL_VERIFICATION = ACCOUNT_EMAIL_VERIFICATION_PER_TENANT[get_tenant()]
或者您可以拥有多个设置文件并按您的意愿加入它们。以下是how django does。
哦,如果您想要将逻辑从设置文件中分离出来,并在评估设置之前运行它,您可以在启动服务器时检查执行的轨迹(例如,从manage.py
开始,然后在其中插入get_tenant
逻辑)。它很可能位于从wsgi.py
文件开始的某个位置--创建application
实例并开始所有Django乐趣的地方。
编程始终由您掌控。