在Django中何时创建新应用(使用startapp)?
我在网上查了很多资料,但还是不太明白Django里说的“应用”到底是什么意思。
我是不是应该为网站的每个功能都创建一个新的应用,即使它们使用的是主项目里的模型?
你们有没有什么好的经验法则,来判断什么时候应该分开做一个新应用,什么时候又应该把功能放在“主项目”或其他应用里?
8 个回答
22
这里是2008年9月6日更新的演示文稿。
摘自幻灯片
这个功能应该单独做成一个应用吗?
- 它和这个应用的主要功能完全无关吗?
- 它和我正在做的其他事情没有关系吗?
- 我在其他网站上也会需要类似的功能吗?
如果以上问题有任何一个回答是“是”,那么最好把它拆分成一个单独的应用。
27
我更喜欢把Django应用看作是可以重复使用的模块或组件,而不是简单的“应用”。
这样做可以让我把某些功能封装起来,互相独立,这样如果我想把某个“应用”分享给大家,就更方便了,同时也更容易维护。
我的一般做法是把特定的功能或功能集合归类成“应用”,就好像我准备把它们公开发布一样。这里的难点在于如何确定每个分类的大小。
我用的一个好方法是想象一下,如果我的应用被公开发布,它们会怎么被使用。这通常会让我缩小分类的范围,更清晰地定义它的“目的”。
51
James Bennett 有一套很棒的 幻灯片,讲的是如何在 Django 中组织可重用的应用程序。