it-swarm.cn

何时在Django中创建一个新应用程序(使用startapp)?

我已经开始搜索,但我仍然无法解释Django定义为“应用程序”的问题。

我是否应该为站点中的每个功能创建一个新的应用程序,即使它使用主项目中的模型?

你们有什么经验法则可以解决何时拆分新应用,何时将功能与“主项目”或其他应用保持在一起?

85
Håkan

James Bennett有一个精彩的 幻灯片组 关于如何在Django中组织可重用的应用程序。

40
Antti Rasinen

我更喜欢将Django应用程序视为可重用的模块或组件,而不是“应用程序”。

这有助于我将某些功能彼此封装和分离,如果我决定与整个社区共享特定的“应用程序”和可维护性,则可以提高可重用性。

我的一般方法是将特定功能或功能集添加到“应用程序”中,就好像我要公开发布它们一样。这里的难点在于确定每个铲斗的大小。

我使用的一个好方法是想象如果我的应用程序是公开发布的,我将如何使用它们。这经常鼓励我缩小桶并更清楚地定义它的“目的”。

18
blahspam

以下是2008年9月6日的最新简报。

DjangoCon 2008:可重复使用的应用程序@ 7:53

幻灯片:Reusable_apps.pdf

取自幻灯片

这应该是它自己的应用吗?

  • 它与应用程序的重点完全无关吗?
  • 它与我正在做的其他事情正交吗?
  • 我是否需要在其他网站上使用类似功能?

如果其中任何一个是“是”?然后最好将其分解为单独的应用程序。

12
Yeo

我倾向于为每个逻辑上独立的模型创建新的应用程序。例如。:

  • 用户个人资料
  • 论坛帖子
  • 博客文章
11
pobk

我遵循的规则是,如果我想在不同的项目中重用该功能,它应该是一个新的应用程序。

如果需要深入了解项目中的模型,那么将其与模型结合起来可能更具凝聚力。

5
Ryan

“应用程序”可以是许多不同的东西,这一切都归结为品味。例如,假设您正在构建一个博客。您的应用可能是整个博客,或者您可以拥有一个“管理”应用,一个适用于所有公共视图的“网站”应用,一个“rss”应用,一个“服务”应用,因此开发人员可以在其中与博客进行交互自己的方式等.

我个人会将博客本身作为应用程序,并打破其中的功能。然后可以在其他网站中轻松地重用该博客。

关于Django的好处是,它会将目录树中任何级别的任何models.py文件识别为包含Django模型的文件。因此,在“应用”本身内将您的功能分解为较小的“子应用”不会让事情变得更加困难。

1
willurd

我在网上找到的这个问题的两个最佳答案是:

  1. 可重用的应用程序对话( 幻灯片 )( 视频 )也在其他答案中提到。 Bennett,作者和Django撰稿人,定期发布供其他人使用的应用程序,并对许多小应用程序有强烈的观点。
  2. Doordash的Django规模提示 它提供了相反的建议,并说在他们开始使用许多单独的应用程序后,他们迁移到一个应用程序。他们遇到了应用程序之间迁移依赖关系图的问题。

两个消息来源都同意您应该在以下情况下创建一个单独的应用程序:

  • 如果您计划在另一个Django项目中重用您的应用程序(特别是如果您计划将其发布给其他人重用)。
  • 如果应用程序与其他应用程序之间很少或没有依赖关系。在这里,您可以想象一个应用程序将来作为自己的微服务运行。
1
Jonathan Berger