推荐的打包Django项目的方法?具有多个应用程序或多个Django软件包的Django软件包?

gen*_*eek 6 python django cookiecutter-django

我正在一个Django项目中,该项目分为5个应用程序(每个应用程序都有3-6个模型)。总体而言,这个项目绝对是我可以在其他项目中重复使用的项目,但是只有包含所有应用程序才有用,因为它们与内在相关。

因此,我想打包此项目以使其遵循Django docsDjango cookiecutter django包可重用。但是,这些示例仅显示如何与单个应用程序打包。

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

  1. 制作5包
  2. 使用30个模型制作一个应用,并将models.py转换为模块
  3. 使用5个应用制作一个程序包(类似于django-allauth的设置方式)

我正在计划使用选项3,因为我认为选项1过于矫揉造作,而选项2被认为是不好的做法(请参阅此帖子此帖子)。我在选项3中看到的问题是,使用此软件包的项目必须INSTALLED_APPS像这样安装所有5个应用程序:

INSTALLED_APPS = [
    'project',
    'project.app1',
    'project.app2',...
]
Run Code Online (Sandbox Code Playgroud)

INSTALLED_APPS如果我将项目与5个应用程序打包在一起,有没有一种方法可以避免必须安装所有应用程序?还是选项1或2更适合此用例?

fjs*_*jsj 1

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

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