【问题标题】:Multi tenancy with multiple apps in djangodjango中具有多个应用程序的多租户
【发布时间】:2016-06-08 16:19:45
【问题描述】:

我从 django-tenant-schemas 开始,它创建了用于分离租户的 postgresql 模式。我是 Django 的新手。谁能解释一下

  1. 多应用项目应如何适应多租户?
  2. django-tenant-schemas 创建特定于租户的用户。如何让用户分布在多个租户中。

【问题讨论】:

  • 您所说的“多应用”究竟是什么意思?你的意思是可以有几种“类型”的租户,不仅有不同的数据库,而且有不同的模式和逻辑?或者您的租户应该有多个应用程序?后来支持 fy django-tenant-schemas 开箱即用。不支持租户的不同“类型”,但您可以通过在“TENANT_MODEL”的某些字段上使用条件来伪造它(对于非“当前”租户应用程序的应用程序返回 404。还有许多其他可能性,但您最好指定做什么你实际上是指“多应用”
  • 我的意思是两个应用程序。例如投票应用和任务应用。所以我只需要在共享应用程序中指定它们?
  • 如果您的每个租户都应该有 2 个不同应用程序的 URL,那么这些应用程序应该在 TENANT_APPS 中使用(而不是共享应用程序!)。 docs 的示例为每个租户提供 2 个自定义应用程序:myapp.hotelsmyapp.houses。共享应用程序用于您可能“出售”您的服务的“公共”站点。请注意,您还应该将different urlconf 用于“公共”租户和“应用程序租户”
  • 感谢您的帮助,如何让用户分布在租户之间?
  • 有几种解决方案: 1. 构建您的应用程序,使其不依赖于用户的真实 FK,并使用 API 获取用户信息或多个数据库 (User.object.using('user_db)...'docs.djangoproject.com/en/1.9/topics/db/multi-db/…)。 2.同步用户表(涉及到很多问题,但是如果您使用的是依赖于用户关系的第三方django应用程序,那么这是唯一的方法)

标签: django postgresql multi-tenant


【解决方案1】:

Django-tenant-schemas 本身提供对多个应用程序的支持,如@imposeren int cmets 所述。

为了使用户在子域中可用,django.contrib.auth 应仅在 sharedapps 中提及,而不应在 tenantapps 中提及。

SESSION_COOKIE_DOMAIN 也应该是 *.domain.com

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2015-12-16
    • 2014-02-10
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多