首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让企业版和公共版的Django应用程序共享一些代码?

如何让企业版和公共版的Django应用程序共享一些代码?
EN

Stack Overflow用户
提问于 2016-01-14 02:48:27
回答 3查看 103关注 0票数 0

我正在使用Django构建一个and应用程序,它需要有两个不同的版本:一个企业版和一个标准的公共版本。到目前为止,我只开发了Enterprise,现在正在寻找以最简单的方式分离这两个版本的最佳方法,同时尽可能避免代码的重复。这两个版本的主要区别在于它们需要不同的URL和不同的视图。我打算使用多租户体系结构来基于子域进行区分,其中www.example.com是公共版本,而company1.example.com则是企业版。

我想出了一些可能的解决方案,但我对其中任何一个都不满意。

  1. 单独的Git存储库和完全独立的项目,所有公共代码都重复。这种大量的代码复制必然会出现错误,在这些地方,事情会变得不同步,并且预期会出现复制粘贴错误。这是最后的解决办法。
  2. 单独的Git存储库,通过Git子模块共享公共代码(包含基本模型和共享视图的单个公共“基本”存储库)。不过,我读过关于git子模块的恐怖故事,所以我对这个解决方案很谨慎。
  3. 包含多个“项目”文件夹(公共/企业)的单个Git存储库,每个文件夹都有自己的基础urls.py、settings.py、wsgi.py等.)多个manage.py文件来选择要运行的“项目”。我担心这个解决方案会变得一团糟,因为如果一个版本需要更新,那么公共版本和企业版本就不可能使用公共库的不同版本。
  4. 单独的Git存储库,将所有共享代码开发为“可重用的应用程序”,并安装到python路径中。这将是一个有点干净的解决方案,但是很难在任何时候对通用模块进行更改。
  5. 通过视图中的条件逻辑管理所有功能的单个项目。这将是最容易出现错误和混乱的所有,我宁愿避免这个解决方案。

有没有人有这类解决方案的经验,或者有人能帮我找到这个问题的最佳解决方案?

EN

回答 3

Stack Overflow用户

发布于 2016-01-14 03:56:01

那么“一个Git存储库,所有的共享代码都被开发成‘可重用的应用程序’呢?”即配置使用INSTALLED_APPS设置启用的选项。

首先,您需要决定您的发布过程。如果您打算同时发布两个版本,那么使用一个git存储库是有意义的。

一个最重要的问题可能是,如果您对代码有不同的发行版要求,例如,如果您希望公共版本中的代码是可公开的,而企业版本是私有的。然后,您可能需要使用两个git存储库。

票数 1
EN

Stack Overflow用户

发布于 2016-01-14 12:47:55

你研究过使用git子树吗?它是子模块的另一种选择,它使流程变得不那么复杂。我认为亚特兰蒂斯在解释它的用途和利弊方面做得很好。几个例子是:

  • “可以修改模块的内容,而不必在其他地方拥有独立的依赖关系存储库副本。”
  • “在完成超级项目的克隆之后,子项目的代码就可用了。”
  • “简单工作流的管理很容易。”

亚特兰西岛的链接是这里

这里还有一个指向git子树的描述文件的链接。

票数 1
EN

Stack Overflow用户

发布于 2016-01-14 03:45:49

最好的解决方案可能是准确地确定在这两个项目之间共享哪些代码,并使其成为一个可重用的应用程序。

然后每个安装都可以安装django应用程序,然后也有自己的站点特定代码。

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

https://stackoverflow.com/questions/34780851

复制
相关文章

相似问题

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