【问题标题】:Recommended way to package a Django project? Django package with multiple apps or multiple Django packages?打包 Django 项目的推荐方法?具有多个应用程序或多个 Django 包的 Django 包?
【发布时间】:2017-09-23 19:53:15
【问题描述】:

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

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

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

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

我计划使用选项 3,因为我认为选项 1 是多余的,而选项 2 被认为是不好的做法(请参阅 this postthis post)。我在选项 3 中看到的问题是,使用此包的项目必须在 INSTALLED_APPS 中安装所有 5 个应用程序,如下所示:

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

如果我用 5 个应用程序打包项目,有没有办法避免必须安装 INSTALLED_APPS 中的所有应用程序?还是选项 1 或 2 更适合此用例?

【问题讨论】:

  • 我也在尝试这样做。有什么进展吗?

标签: python django cookiecutter-django


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多