打包 Django 项目的推荐方式?具有多个应用程序或多个 Django 包的 Django 包?
Recommended way to package a Django project? Django package with multiple apps or multiple Django packages?
我正在开发一个分为 5 个应用程序(每个应用程序有 3-6 个模型)的 Django 项目。总的来说,这个项目绝对是我会在其他项目中重用的东西,但只有它包含所有应用程序才有用,因为它们本质上是相关的。
因此,我想打包这个项目,使其在Django docs and Django cookiecutter django package之后可以重用。但是,这些示例仅显示了如何使用单个应用程序进行打包。
根据我的阅读,有几个选项:
- 制作 5 个包裹
- 制作一个包含 30 个模型的应用程序并将 models.py 转换为一个模块
- 制作一个包含 5 个应用程序的程序包(类似于 django-allauth 的设置方式)
我正计划使用选项 3,因为我认为选项 1 有点矫枉过正,而选项 2 被认为是不好的做法(参见 this post and this post)。我在选项 3 中看到的问题是,使用此软件包的项目必须在 INSTALLED_APPS
中安装所有 5 个应用程序,如下所示:
INSTALLED_APPS = [
'project',
'project.app1',
'project.app2',...
]
如果我用 5 个应用程序打包项目,有没有办法避免必须安装 INSTALLED_APPS
中的所有应用程序?还是选项 1 或 2 更适合此用例?
如果应用程序非常耦合并且只能一起使用,IMO 将它们放在不同的包中是没有意义的。所以选项 3 是答案:如果它是私有的,则将它们全部放在一个可通过 setup.py
安装的包中,或者如果它是 public.
,则在 pip
上发布
无耻插件:关于 Django 应用程序的其他建议,您可能对我的 "Your Django app is a User Interface" 演讲感兴趣:https://www.youtube.com/watch?v=Mnzvjn1v1CY (slides here)
我正在开发一个分为 5 个应用程序(每个应用程序有 3-6 个模型)的 Django 项目。总的来说,这个项目绝对是我会在其他项目中重用的东西,但只有它包含所有应用程序才有用,因为它们本质上是相关的。
因此,我想打包这个项目,使其在Django docs and Django cookiecutter django package之后可以重用。但是,这些示例仅显示了如何使用单个应用程序进行打包。
根据我的阅读,有几个选项:
- 制作 5 个包裹
- 制作一个包含 30 个模型的应用程序并将 models.py 转换为一个模块
- 制作一个包含 5 个应用程序的程序包(类似于 django-allauth 的设置方式)
我正计划使用选项 3,因为我认为选项 1 有点矫枉过正,而选项 2 被认为是不好的做法(参见 this post and this post)。我在选项 3 中看到的问题是,使用此软件包的项目必须在 INSTALLED_APPS
中安装所有 5 个应用程序,如下所示:
INSTALLED_APPS = [
'project',
'project.app1',
'project.app2',...
]
如果我用 5 个应用程序打包项目,有没有办法避免必须安装 INSTALLED_APPS
中的所有应用程序?还是选项 1 或 2 更适合此用例?
如果应用程序非常耦合并且只能一起使用,IMO 将它们放在不同的包中是没有意义的。所以选项 3 是答案:如果它是私有的,则将它们全部放在一个可通过 setup.py
安装的包中,或者如果它是 public.
pip
上发布
无耻插件:关于 Django 应用程序的其他建议,您可能对我的 "Your Django app is a User Interface" 演讲感兴趣:https://www.youtube.com/watch?v=Mnzvjn1v1CY (slides here)