什么是Django中的“app”?

时间:2009-10-13 23:09:56

标签: python django

根据the documentation

  

应用程序是一个支持的Web应用程序   某事 - 例如,博客系统,等等   公共记录数据库还是简单的   民意调查应用一个项目是一个集合   配置和应用程序   特定的网站。一个项目可以   包含多个应用。一个应用程序可以   在多个项目中。

然而,什么是“app”的其他例子?

3 个答案:

答案 0 :(得分:14)

什么使应用程序(对我们而言)是一回事:

应用程序是重用的单位

如果我们想将其拆分用于其他地方,那么它就是一个应用程序。

如果它有可重用的数据模型,那就是一个应用程序。用户个人资料:App。客户:App。客户统计历史(如果不提供太多细节,很难解释):App。报告:App。精算分析:App。用于数据收集的供应商API:App。

如果它是唯一的并且永远不会被重复使用(即特定于客户),那么它就是一个依赖于其他应用程序的应用程序。数据加载是客户特定的。每个应用程序都建立在现有的一对应用程序(批量上传和统计历史记录)

之上

答案 1 :(得分:5)

Django应用程序是可重用功能的捆绑包。在开始时,很容易为您的项目使用一个自定义应用程序,但“Django方式”是将其分解为单独的应用程序,每个应用程序只做一件事。您可以查看django.contrib,了解真正精心制作的可重用应用程序的示例。

我最近的一个例子:客户需要一种方法将CSV数据导入Django模型。最简单的方法是添加一个带有FileField的模型,并为他们上传的内容的特定格式编写一个快速解析器。这样可以正常工作,直到格式改变,我必须让解析器匹配。但这是一个常见的重复任务(导入数据),与现有应用程序(管理数据)无关,因此我自行将其分解。这个可插拔的应用程序可以导入任何活动模型的数据。现在,下次客户端需要导入功能时,我只需将此代码添加到installed_apps并运行syncdb。

这是一个判断调用何时打开一个应用程序,但我的经验法则是,如果我可能再做一些事情,我将花费额外的时间使它成为一个通用的应用程序。这意味着我已经创建了一些小应用程序(有些只包含一个模板标签),但是对于未来的收益来说,它的开销很小。

答案 2 :(得分:2)

如果您不打算使用Django的内置用户框架,用户管理很可能是一个应用程序。

它具有存储数据的用户界面和定义模型,它实际上与博客或Wiki应用程序分开(尽管信息将被共享)。

只要两个应用程序都在同一个“项目”中,就应该对数据库使用相同的设置。您应该能够确保在您尝试使用它们的地方导入正确的模型。

有关详情,请参阅this link