如果我使用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/。
我该怎么设置呢?
发布于 2020-07-13 13:35:06
您可以使用自定义中间件,然后用它替换默认的中间件。Django Tenant Schema documentation的高级用法部分(我猜,在Django租户中也是如此)描述了如何做到这一点。下面是一个如何使用自定义HTTP头的示例。
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的值。
https://stackoverflow.com/questions/62343644
复制相似问题