Django 多租户:如何为每个租户自定义 django 设置“ACCOUNT_EMAIL_VERIFICATION”?

2024-01-03

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(使用前将#替换为@)

Django 多租户:如何为每个租户自定义 django 设置“ACCOUNT_EMAIL_VERIFICATION”? 的相关文章

随机推荐