Django==1.11.7
django-tenant-schemas==1.8.0
django-allauth==0.34.0
使用 django-tenant-schemas (postgres) 的多租户站点。
对于不同的租户,需要不同的设置。
更具体地说,ACCOUNT_EMAIL_VERIFICATION 需要不同的设置
1 租户需求ACCOUNT_EMAIL_VERIFICATION = "optional"
而另一个需要ACCOUNT_EMAIL_VERIFICATION ="mandatory"
寻找在源代码 https://github.com/pennersr/django-allauth,该设置看起来不可自定义,它是针对整个 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()]
或者您可以拥有多个设置文件并根据需要加入它们。这是Django 是如何做的 https://github.com/django/djangoproject.com/tree/master/djangoproject/settings.
哦,如果您想将逻辑与设置文件分开并在评估设置之前运行它,您可以检查启动服务器时的执行轨迹(例如从manage.py
并插入你的get_tenant
逻辑介于两者之间)。最有可能的是从某个地方开始wsgi.py
文件 - 其中application
实例被创建,所有 django 的乐趣就开始了。
在编程方面,您始终处于掌控之中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)