我刚刚开始学习Django,并且对布局和组织项目和应用程序的最佳方式感到有些困惑.根据我的理解,项目是整个网站,应用程序是构成该网站的部分吗?
对于第一个项目,我正在建立一个小型的电子商务类型网站,它将拥有用户,项目等......那么我应该拥有"用户"和"项目"应用程序吗?与用户注册/登录,项目标签,项目评论等较小的部分相比如何呢?用户身份验证,标记和评论是否应该是单独的应用程序?
基本上我无法绕过应用程序的概念以及何时将不同的用例分成单独的应用程序,同时保持一切可管理和干燥.
cet*_*eek 19
Ignacio正确地指出你提到的一些应用程序已经存在.你还应该看看像Pinax这样的项目可以作为你自己项目的起点的其他可插拔应用程序.
现在回答你的问题:Django项目是Django应用程序的集合 - 你正确的部分.在Django的书更好地定义它:
"项目是Django实例的设置集合,包括数据库配置,Django特定选项和特定于应用程序的设置."
"一组Django代码,包括模型和视图,它们共存在一个Python包中,代表一个完整的Django应用程序."
但在最近与Jacob Kaplan-Moss的一堂课中,我明白了(我不是说他就是这么说的!!!)Django App就是要封装常见的明确定义的行为.我也明白拥有许多小应用程序是可以的 - 比拥有一个可以完成所有工作的单一应用程序更好 - 而且有些应用程序只是提供模板,有些只是模型,有些是完整的模板,模型和视图集合.
我的大部分项目 - 我们公司的内部应用程序 - 都有一个内部开发的通用可插拔应用程序,它几乎是模板,CSS,JavaScript等的集合; 将项目与一个共同的外观和感觉联系在一起.我在该可插拔应用程序中没有任何视图或模型.
我有一个可插拔的应用程序,也是内部开发的,包含一堆在多个项目之间共享的模型.这些模型代表了几个不同应用程序使用的常见数据库表,并且在每个应用程序中复制它们都会违反DRY.
一些很好的应用程序示例:
所有这些都解决了一个逻辑问题.他们不会试图成为一个做它,所有的解决方案...的的Gravatar应用不提供OpenID的支持(还有对OpenID的另一个应用程序),我的服务支持内部应用程序不提供身份验证(它使用默认的Django应用程序).
Django应用程序的一个不好的例子是实现身份验证,openid支持,帮助台和项目跟踪的应用程序.为什么会那么糟糕?因为现在如果你想重用你的身份验证应用程序,你必须从一些无所不包的应用程序中解放一些模型,一些视图和一些模板.如果您认为OpenId支持对于您的下一个项目是必须的,那么您将不得不浏览应用程序的这个庞然大物的代码并找出哪些部分是相关的.
一个好的Django应用程序提供了一组逻辑操作并且运行良好.
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |