Django模式实践

Django的体系结构模式为MVT(Model、View、Template),与传统的MVC在理论层面基本一致:两者之间M的概念是一致的;MVT的View与MVC的Controller相对应;MVT的Template与MVC的View相对应。

但Django更进一步,通过自身的基础结构对MVT的使用在某些层面具有一定的强制性,如在T中不能编写逻辑(所谓的{%if%}等都是普通标签而不是编程语言);也因为Django的命名和提供的一些基础结构与常规的(其他领域)的规范不尽相同,导致在某些方面会给人带来很多迷惑.比如,业务逻辑一般可以写入View层,或者是Model中,或者更具迷惑性的Manager中。

就个人的实践来说,建议按如下规则组织代码结构:

Model层:与模型相关的逻辑存放于此。如一个关于如判断一个题目的答案是否正确的逻辑,应该放到Question的实例方法中;与模型类相关,但与具体模型实例不相关的方法,放到Model的类方法(@classmethod——推荐)或静态方法(@static)中;与模型集合,尤其是与数据访问相关的,放到模型特定的manager子类中,并适时替换Model的objects默认管理器。

View层:流程跳转,模型协作等放到此层。

Template层:单纯的数据表现

如此分法,乍一看是将业务逻辑割裂到Model(充血模型)与View中,未免逻辑不够清晰不便于将来的复用。然而,通过从View端入手,将其看作流程控制与调度层后,就会更加清晰了。而且所谓复用,绝大多数情况下只是一厢情愿罢了。

 

P.S.也有观点认为MVC/MVT不能算是体系结构模式。只能是表现层模式。这里不细究具体理论观点。

转载于:https://www.cnblogs.com/Ankh/archive/2012/09/19/2693691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值