Django-多租户体系结构。如何为单个应用程序创建多个用户

Django-多租户体系结构。如何为单个应用程序创建多个用户,django,multiple-users,Django,Multiple Users,我已经创建了一个django项目,其中有一个应用程序,可以查看、向数据库添加数据等。现在我想创建多个用户,他们可以使用这个应用程序查看自己的数据。最好的方法是什么 假设有3个用户user1、user2、user3。用户1为公司1工作用户2为公司2工作用户3为公司3工作。因此每个用户都有自己的数据 目前我正计划这样做。 我复制myapp代码,并为每个用户创建3个对应的应用。所以项目目录看起来像这样 myproject |- myapp 因此,我现在有3个具有类似功能的应用程序,每个用户都有自己

我已经创建了一个django项目,其中有一个应用程序,可以查看、向数据库添加数据等。现在我想创建多个用户,他们可以使用这个应用程序查看自己的数据。最好的方法是什么

假设有3个用户user1、user2、user3。用户1为公司1工作用户2为公司2工作用户3为公司3工作。因此每个用户都有自己的数据

目前我正计划这样做。 我复制myapp代码,并为每个用户创建3个对应的应用。所以项目目录看起来像这样

myproject
 |- myapp
因此,我现在有3个具有类似功能的应用程序,每个用户都有自己的数据。现在,障碍是如何限制访问,以便每个用户都能看到自己的应用程序。例如,user1应该只能看到myappuser1的内容,user2应该只能看到myappuser2的内容。我该怎么做?我尝试在django admin中创建组,但这只允许我在myapp下编辑对模型的访问权限。它不限制用户查看其他用户的页面

备选案文2: 为每个用户创建单独的django项目。这解决了用户限制,但要在heroku中部署,我应该将每个应用程序注册为一个应用程序,然后我必须创建一个唯一的登录页面,每个客户都可以通过该页面登录,否则我必须为每个用户提供不同的登录url


您能建议一下是否有更好的方法吗?

如果您确实在寻找多租户体系结构,我建议您看看这个库

我相信您使用的术语是用户,意思是指属于客户的用户。例如,您有一个具有三个客户端的应用程序

  • A(它有用户A1、A2、A3)
  • B(有用户B1、B2、B3)
  • C(它有用户C1、C2、C3)
因此,当用户C3登录时,他/她应该只能查看客户端C的数据,而不能查看客户端A/B的数据


如果这确实是您的需求,您可以看看我之前建议的库。

如果您确实在寻找多租户体系结构,我建议您看看库

我相信您使用的术语是用户,意思是指属于客户的用户。例如,您有一个具有三个客户端的应用程序

  • A(它有用户A1、A2、A3)
  • B(有用户B1、B2、B3)
  • C(它有用户C1、C2、C3)
因此,当用户C3登录时,他/她应该只能查看客户端C的数据,而不能查看客户端A/B的数据


如果这确实是您的要求,您可以查看我之前建议的库。

如果三个用户指的是三种不同类型的用户,那么实施基于角色的访问可能会有所帮助。而不是基于角色。假设他们来自不同的公司。是否要构建多租户体系结构?另外,如果用户和他们想要访问的应用程序之间没有重叠,为什么不创建单独的项目呢?谢谢这个词。是的,多租户。用户将使用几乎相同的应用程序,但数据不同。选项2是创建不同的项目,但随后我遇到了部署问题,例如在heroku中,我为一个CustomerName应用程序创建了一个heroku应用程序,该应用程序具有不同的数据:听起来就像任何其他web应用程序一样。根据登录用户进行查询,只向他们显示与他们相关的信息。如果三个用户指的是三种不同类型的用户,则实施基于角色的访问可能会有所帮助。而不是基于角色的访问。假设他们来自不同的公司。是否要构建多租户体系结构?另外,如果用户和他们想要访问的应用程序之间没有重叠,为什么不创建单独的项目呢?谢谢这个词。是的,多租户。用户将使用几乎相同的应用程序,但数据不同。选项2是创建不同的项目,但随后我遇到了部署问题,例如在heroku中,我为一个CustomerName应用程序创建了一个heroku应用程序,该应用程序具有不同的数据:听起来就像任何其他web应用程序一样。根据谁登录进行查询,只显示与他们相关的信息。是。精确地例如,我看过类似的库。它们的实施方式似乎有所不同。例如,一个u共享使用一个数据库和一个租户模式。Django multitenant使用一个表和一个模式。我还在考虑使用哪种架构。这是你自己决定的。例如,您可能会在项目中发现需要使用芹菜,因为该项目已经有了一个库。根据您的用例和需求做出决定。是的。精确地例如,我看过类似的库。它们的实施方式似乎有所不同。例如,一个u共享使用一个数据库和一个租户模式。Django multitenant使用一个表和一个模式。我还在考虑使用哪种架构。这是你自己决定的。例如,您可能会在项目中发现需要使用芹菜,因为该项目已经有了一个库。根据您的用例和需求做出决策。
myproject
  |- myapp
  |- myappuser1
  |- myappuser2
  |- myappuser3