何时在Django中创建新应用(使用startapp)?

时间:2020-03-05 18:53:50  来源:igfitidea点击:

我已经为此搜索了一下,但是在Django定义为"应用程序"方面仍然遇到麻烦。

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

你们对何时拆分新应用程序以及何时将功能与"主项目"或者其他应用程序保持在一起有很好的经验法则吗?

解决方案

回答

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

  • 用户资料
  • 论坛帖子
  • 博客文章

回答

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

这有助于我将某些功能相互封装和解耦,如果我决定与整个社区共享特定的"应用",则可以提高可重用性,并具有可维护性。

我的一般方法是将特定功能或者功能集存储到"应用程序"中,就像我要公开发布它们一样。这里最困难的部分是弄清楚每个存储桶有多大。

我使用的一个好技巧是想象如果我的应用程序公开发布后将如何使用它们。这通常鼓励我缩水桶,更清楚地定义其"目的"。

回答

詹姆斯·本内特(James Bennett)提供了一系列精彩的幻灯片,介绍了如何在Django中组织可重复使用的应用程序。

回答

一个"应用程序"可能有很多不同的东西,所有这些实际上都归根结底。例如,假设我们正在构建博客。应用程序可以是整个博客,也可以有一个"管理员"应用程序,一个用于所有公共视图的"站点"应用程序,一个" rss"应用程序,一个"服务"应用程序,以便开发人员可以在其博客中与博客进行交互自己的方式等

我个人将使博客本身成为应用程序,并扩展其中的功能。然后可以很轻松地在其他网站中重复使用该博客。

Django的优点在于,它将目录树中任何级别的所有models.py文件识别为包含Django模型的文件。因此,将功能分解为"应用程序"本身中较小的"子应用程序"不会带来任何困难。

回答

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

如果需要对项目中的模型有深入的了解,则将其与模型结合在一起可能会更有凝聚力。