在钻研更多代码之前,让我们先花点时间考虑Django数据驱动Web应用的总体设计。Django的设计轨迹松耦合以及对应用程序中不同部分的严格分割。遵循这个理念的话,要想修改应用的某部分而不影响其他部分就比较容易了。在视图函数中,我们已经讨论过了通过模版系统把业务逻辑和表现逻辑分割开的重要性。在数据库层中,我们对数据访问逻辑也应用了同样的理念。把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式。在这个模式中,Model代表数据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据存取层,View代表的是系统中选择显示什么和怎么显示的部分,Controller指的是系统中根据用户输入及需要访问模型,以决定使用哪个视图的哪部分。

1.为什么缩写

像MVC这种明确定义模式的主要作用是改善开发人员之间的沟通。比起告诉同事,“让我们采用抽象的数据存取方式,然后单独划分一层来显示数据,并且在中间加上一个控制它的层”,一个通用的说法会让你受益,你只需说:“我们在这里使用MVC模式吧。”Django紧紧遵循这种MVC模式,可以称得上是一种MVC框架。下面是Django中M、V和C各自的含义:

M:数据存取部分,由Django数据库层处理

V:选择显示哪些数据以及怎样显示的部分,由视图和模版处理

C:根据用户输入委派视图的部分,由Django框架根据URLconf设置,对给定URL调用适当的Python函数。

2.MTV开发模式

由于C由框架自行处理,而Django里更关注的是模型(Model)、模版(Template)和视图(Views),因此Django也被称为MTV框架。在MTV开发模型中:

M:代表模型(Model),即数据存取层。该层处理与数据相关的所有事物,即如何存取、如何验证有效。

T:代表模版(Template),即表现层。该层处理与表现相关的决定,即如何在页面或其他类型文档中进行显示。

V:代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模版的相关逻辑。你可以把它看做是模型与模型之间的桥梁。

如果你熟悉其他的MVC Web开发框架,比如说Ruby on Rails,那么你可能会认为Django视图是控制器,而Django模版是试图。很不幸,这是对MVC不同诠释所引起的错误认识。在Django对MVC的诠释中,视图用来描述要展现给用户的数据;而不是数据如何展现以及展现哪些数据。相比之下,Ruby on Rails及一些同类框架提倡控制器负责决定向用户展现哪些数据,而视图仅决定如何展现数据,而不是展现哪些数据。

两种诠释种没有哪个更加正确一些,重要的是要理解底层概念。

软件测试 | MTV开发模式相关推荐

  1. Django MTV 开发模式 + 数据库配置

    MTV 开发模式 Django 的设计鼓励松耦合及对应用程序中不同部分的严格分割.遵循这个理念的话,要想修改应用的某部分而不影响其它部分就比较容易了.在视图函数中,我们已经讨论了通过模板系统把业务逻辑 ...

  2. Django开发模式与流程

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  3. 技术支持和测试的区别_软件测试与开发岗位,哪个更适合你?

    通常2选1,最残酷.因为选择了一个就意味着必然要放弃另一个.那对于测试和开发,究竟你更适合哪一款呢? 其实要搞清楚怎么解决这个问题,最起码要先搞明白它们各自的工作职能是什么. 下面举个日常工作中常见的 ...

  4. 软件的开发模式和生命周期模型

    一.开发模式 1.线性模型:最常见的"瀑布模型",基础框架,但缺点在于"集成之日就是爆炸之日".(立项分析-     需求分析-设计-编码-测试-维护)很多企业 ...

  5. 网上商城代码实现_中国中铁网上商城转型敏捷开发模式,实现快速反应、快速迭代...

    △北研中心的同事给业务部门演示迭代成果中国中铁网上商城成功转型敏捷开发模式,实现快速反应.快速迭代.切实解决公司内部以及合作方的业务需求,更好服务多样化的客户群体.经历了两次每2周为一迭代的短期快速开 ...

  6. 飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式

    百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代.其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式.同时在该版本中将默认的开发模式定为动态图模式, ...

  7. OpenSource的开发模式探讨

    为什么80%的码农都做不了架构师?>>>    OpenSource的开发模式探讨zt http://mail.mailer.com.cn:81/article/articlevie ...

  8. 架构师是如何炼成的?以天猫APP架构开发模式升级工程为例

    在集团大数据.算法的背景下,猫客(天猫客户端)首页率先从2015年的坑位运营走向2016年的全面个性化,猫客首页个性化业务点多达50多处,个性化场景大部分通过通过Aladdin(天猫推荐)接入TPP( ...

  9. Entity Framework技术系列之2:三种开发模式实现数据访问

    前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...

最新文章

  1. 如何成为一名专家级的开发人员
  2. java aws s3_java操作AWS S3一些坑记录
  3. sql的limit用法
  4. 软件测试人不得不读的经典书籍推荐
  5. 蓝桥杯2015年第六届C/C++省赛B组第二题-星系炸弹
  6. Buff加持!OpManager+Slack集成助力团队协作
  7. iPhone 总是提示 无法验证服务器身份 a.wunderlist.com 解决办法
  8. vm虚拟机安装win7出现 Error loading image cdmenu.ezb
  9. php奖状,利用CSS布局做一个简单的荣誉证书(代码示例)
  10. 【Linux基础编程】tr命令
  11. 小苹果音乐用计算机怎么打,小苹果苗语版歌曲-计算器音乐简谱,比如一些流行歌曲小苹果等等之类的?...
  12. 一道被前端忽略的基础题,不信看你会几题
  13. 我写了一个语音识别引擎
  14. 聊聊志愿填报那点事儿
  15. 一个软硬件牛人的学习经历---给同是换行的人以共勉
  16. 数理统计学类毕业论文文献都有哪些?
  17. python爬虫抓图_Python系列之五_爬虫抓图
  18. git reset命令详解
  19. java实现图片上添加水印
  20. Oracle PrimaveraUnifier 之数据要素(Data Element)

热门文章

  1. C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
  2. js 的 slice 和 splice
  3. View‘s SELECT contains a subquery in the FROM clause
  4. 多路复用技术主要有几种类型?它们各有什么特点
  5. oracle 专用模式/共享模式(dedicated/shared)
  6. delphi mysql 删除_Delphi 用SQL语句添加删除修改字段
  7. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
  8. 《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享(2)
  9. python做事务所审计收费标准_会计师事务所收费标准
  10. CSS - 文字超出省略号