首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用同一域名上的Django租户,而不是子域或多个域

使用同一域名上的Django租户,而不是子域或多个域
EN

Stack Overflow用户
提问于 2020-06-12 19:47:07
回答 1查看 1.1K关注 0票数 1

如果我使用django-tenant-schemas (或django-tenants fork),它们的设置方式是您将访问单独的子域或单独的域上的租户。

这意味着使用tenant1.mysite.com或tenant1.com访问tenant1。

但是,我希望使用mysite.com/tenant1/、mysite.com/tenant2/访问租户。

这是因为我使用的是DRF,所以我只想将它们的信息分开存储。我想以同样的方式通过API访问它们。例如,我可以调用mysite.com/tenant1/api/token/。

我该怎么设置呢?

EN

回答 1

Stack Overflow用户

发布于 2020-07-13 13:35:06

您可以使用自定义中间件,然后用它替换默认的中间件。Django Tenant Schema documentation的高级用法部分(我猜,在Django租户中也是如此)描述了如何做到这一点。下面是一个如何使用自定义HTTP头的示例。

代码语言:javascript
复制
class XHeaderTenantMiddleware(BaseTenantMiddleware):
"""
Determines tenant by the value of the ``X-DTS-SCHEMA`` HTTP header.
"""
def get_tenant(self, model, hostname, request):
    schema_name = request.META.get('HTTP_X_DTS_SCHEMA', get_public_schema_name())
    return model.objects.get(schema_name=schema_name)

在本例中,您可以通过从URL path中提取租户(可能使用string.split(“分隔符”))来获取租户,而不是使用Header,然后在上面的代码中将其设置为schema_name的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62343644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档