2009-10-13 84 views
12

the documentation什么是Django中的“应用程序”?

的应用程序是一个Web应用程序,做 东西 - 例如,一个博客系统, 数据库的公共记录或简单 调查程序。一个项目是 配置和应用程序的一个 特定网站的集合。一个项目可以包含多个应用程序,其中包括 。一个应用程序可以在多个项目中为 。

但是,什么使得一个“应用程序”的其他例子是什么?

回答

14

是什么让一个应用程序(我们)是一两件事:

某个应用程序的重复使用

该股如果我们可能要拆它关闭到别的地方使用,它是一个应用程序。

如果它有一个可重用的数据模型,它是一个应用程序。用户配置文件:App。客户:应用程序。客户统计历史(这是很难解释,但没有提供太多的细节):应用程序。报告:App。精算分析:App。供应商API用于数据收集:应用程序。

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

+0

这是有道理的,并证实我的想法。谢谢。 – 2009-10-13 23:26:12

2

如果您不打算使用Django的内置用户框架,用户管理可能非常适合应用。

它具有用于存储数据的用户界面和定义模型,并且它与Blog或Wiki应用程序(尽管信息将被共享)真的是分开的。

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

有关更多信息,请参阅this link

+0

好的。我想,用户是一个糟糕的选择。但你可以在应用程序之间共享数据? – 2009-10-13 23:16:39

+0

是的,你应该可以。编辑帖子以提供更多信息。 – 2009-10-13 23:25:57

4

Django应用程序是可重用功能的捆绑包。开始时,只需为项目使用一个自定义应用程序很容易,但“Django方法”是将其分解为单独的应用程序,每个应用程序只能执行一项操作。你可以看看django.contrib的例子,这些例子是非常好的可重用应用程序。

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

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