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

我已经search了这个,但我仍然有什么困难与什么Django定义为“应用程序”。

我应该为网站中的每个function创build一个新的应用程序,即使它使用主项目中的模型?

你们有什么时候分开一个新的应用程序,什么时候与“主要项目”或其他应用程序保持function的好经验法则?

James Bennett在Django中提供了一套关于如何组织可重用应用程序的幻灯片 。

我宁愿将Django应用程序看作是可重用的模块或组件,而不是“应用程序”。

这有助于我封装和分离某些function,从而提高可重用性,因为我应该决定与整个社区共享一个特定的“应用程序”和可维护性。

我的一般做法是将特定function或function集合分解为“应用程序”,好像我将公开发布它们一样。 这里困难的部分是弄清楚每个桶有多大。

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

我倾向于为每个逻辑上分离的一组模型创build新的应用程序。 例如:

  • 用户configuration文件
  • 论坛post
  • 博客文章

以下是2008年9月6日更新的介绍。

http://www.youtube.com/watch?v=A-S0tqpPga4

http://media.b-list.org/presentations/2008/djangocon/reusable_apps.pdf

采取从幻灯片

这应该是它自己的应用程序?

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

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

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

如果需要对项目中的模型有深入的了解,那么使用模型可能会更有凝聚力。

一个“应用程序”可能是很多不同的东西,这一切都归结为品味。 例如,假设您正在构build博客。 您的应用程序可能是整个博客,或者您可以有一个“pipe理”应用程序,所有公共视图的“网站”应用程序,“rss”应用程序,“服务”应用程序,以便开发人员可以与他们的博客自己的方式等

我个人会将博客本身作为应用程序,并打破其中的function。 这个博客可以很容易地在其他网站上重复使用。

Django的好处在于,它可以将目录树中任何级别的models.py文件识别为包含Django模型的文件。 因此,在“应用程序”内将自己的function分解为更小的“子应用程序”不会使事情变得更加困难。