打包Django项目的推荐方法? Django包含多个应用程序或多个Django包?

时间:2017-04-26 12:06:18

标签: python django cookiecutter-django

我正在开发一个Django项目,该项目分为5个应用程序(每个有3-6个模型)。总的来说,这个项目肯定是我会在其他项目中重用的东西,但只有当它包含所有应用程序时它才有用,因为它们本质上是相关的。

因此,我想打包此项目,使其在Django docsDjango cookiecutter django package之后可重复使用。但是,这些示例仅显示如何使用单个应用程序打包。

根据我的阅读,有几个选择:

  1. 制作5个包
  2. 制作一个包含30个型号的应用,并将models.py转换为模块
  3. 制作一个包含5个应用的包(类似于设置django-allauth的方式)
  4. 我打算使用选项3,因为我认为选项1过度,选项2被视为不良做法(请参阅this postthis post)。我在选项3中看到的问题是,使用此软件包的项目必须在INSTALLED_APPS中安装所有5个应用程序,如下所示:

    INSTALLED_APPS = [
        'project',
        'project.app1',
        'project.app2',...
    ]
    

    如果我用5个应用程序打包项目,有没有办法避免在INSTALLED_APPS中安装所有应用程序?或者对于这个用例更好的选项1还是2?

1 个答案:

答案 0 :(得分:1)

如果应用程序非常耦合并且只能一起使用,那么IMO将它们放在不同的包中是没有意义的。所以选项3就是答案:如果它是私有的,可以通过setup.py将它们全部放在一个可安装的软件包中,如果它是公开的,则可以在pip上发布。

无耻插件:有关Django应用程序的其他建议,您可能对我的“您的Django应用程序是用户界面”谈话感兴趣:https://www.youtube.com/watch?v=Mnzvjn1v1CY(幻灯片here