Django相当于PHP CodeIgniter的HMVC

时间:2015-08-10 07:42:09

标签: python django hmvc

我已经使用CodeIgniterHMVC moduler extension开发了一些网络应用。我项目的文件夹结构就像

Project
| config(common for module1 & module2)
| | database.php
| | config.php
| modules
| | module1
| | | config(module1 specific)
| | | | database.php
| | | | config.php
| | | model
| | | | ...
| | | view
| | | | ...
| | | controllers
| | | | ...
| | module2
| | | config(module2 specific)
| | | | database.php
| | | | config.php
| | | model
| | | | ...
| | | view
| | | | ...
| | | controllers
| | | | ...

文件夹结构显示我有module1和module2的公共配置以及模块特定配置。 现在,我计划使用Python& Django是一个更大的项目,其数量模块比我之前开发的更多。我相信管理可扩展应用程序的最佳方法是使用HMVC设计模式。所以,任何人都可以告诉我在Django中有与HMVC(通用配置和模块特定配置)相当的东西。

1 个答案:

答案 0 :(得分:5)

在罗马时......

首先,不管HMVC理论的优点如何,如果你开始你的第一个Django项目,那么最好不要偏离"普通的做法"在Django。后来,当你对它感到满意时,你可以做任何改变你认为会有所改善。

相反,如果您有一种您真正喜欢并且感觉最好遵守的模式,那么最好选择最能体现这些模式的工具。如果Django难以做你认为最好的事情,那么它就不是你最好的选择。

现在详细说明。 Django没有尝试将自己呈现为MVC框架,关于MTV(模板模板,视图)的FAQ条目有点过时,因为它试图将这种模式呈现为"重新解释" MVC;但现在它更像是"而不是MVC"。主要是因为没有"控制器"在Django。

首次快速阅读HMVC上的维基百科页面,似乎是将控制器拆分为更加本地化的代码,避免单个对象",并改善模块化。由于Django中没有控制器,乍一看似乎HMVC在Django中没有任何意义。

但是,据说在Django中,URL映射填充了#34;控制器"概念。知道吗?他们是等级和模块化的!

所以,根据你对HMVC的定义,你可能会发现Django已经在做了!

但是,严肃地说,当你转换技术时,请留下先入之见。

(免责声明:我非常喜欢Django架构,因为我发现它非常容易启动并且非常容易维护。与此同时,我并不关心一点关于Web服务器框架的MVC,因为我感觉它是适用于桌面GUI模块化应用程序的MVC理论的不良改编。具有讽刺意味的是,前端框架正在偏离&#34; web MVC&#34;并重新发现&#34; GUI MVC&#34;)< / p>