Django隔离子域

时间:2017-11-15 21:51:07

标签: python django web-applications subdomain

假设我们有一个名为Event的模型,其中有一个slu name。我正在寻找配置我的Django应用程序,以基本上将我的所有其他模型隔离到单独的应用程序,具体取决于事件。例如:

"http://annualmeetup.domain.com" # in the form of "http://{}.domain.com".format(e.name)

如何创建已完成的隔离应用,以便我的用户,会议和其他模型仅在给定子域的上下文中工作?我正在考虑为每个事件编写多个应用程序,并通过命令脚本复制相同的模型,但我仍然不知道如何将应用程序指向子域。

2 个答案:

答案 0 :(得分:5)

一种选择是使用专为此目的而设计的django-tenant-schemas

  

Django目前没有简单的方法来支持使用相同项目实例的多个租户,即使只有数据不同。因为我们不希望您运行项目的许多副本,所以您可以拥有:

     
      
  • 在同一个实例上运行的多个客户
  •   
  • 共享和租户特定数据
  •   
  • 租户视图路由(即子域映射)
  •   

这将导致您为每个租户(事件,在您的情况下)拥有单独的数据库架构,每个都有自己的隔离模型。没有太多努力,您可以动态创建租户(事件) - 听起来您的用例需要这样做。

注意:MyListArray:({Return=something;},{Departure=something;},{Both=something;}); 仅适用于Postgres。

答案 1 :(得分:0)

您不必为每个活动编写单独的应用程序。如果每个事件共享相同的架构,您可以创建架构Multitenant

以下是可用于此的所有软件包。 Link here

我个人推荐django-hosts但它没有提供良好的数据隔离功能。如果您已经有一个现有项目并且只想引入多租户,那么这很好。但是,如果您刚刚开始该项目,django-tenancy是一个很好的选择。