MTV模式与MVC模式
1.什么是MTV
MTV模式就是Model(模型),Templates(模板),View(视图)。
Model:用于封装与应用程序业务逻辑相关的数据及数据处理方法,是web应用程序中用于处理应用程序的数据逻辑部分,Modle通常只提供功能性接口,通过该接口可以获得Modle所有功能。Modle其实就是负责数据持久化到数据库。
Templates:负责显示数据和呈现,View对齐直接输出。
View:负责用户端请求,可以看成反向功能,主要处理用户交互。View承载数据逻辑。
注意:Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Modle和Template。
1,Web服务器(中间件)收到一个http请求
2,Django在URLconf里查找对应的视图(View)函数来处理http请求
3,视图函数调用相应的数据模型来存取数据、调用相应的模板向用户展示页面
4,视图函数处理结束后返回一个http的响应给Web服务器
5,Web服务器将响应发送给客户端
这种设计模式关键的优势在于各种组件都是松耦合的。这样,每个由 Django驱动的Web应用都有着明确的目的,并且可独立更改而不影响到其它的部分。
比如,开发者更改一个应用程序中的 URL 而不用影响到这个程序底层的实现。设计师可以改变 HTML页面的样式而不用接触Python代码。
数据库管理员可以重新命名数据表并且只需更改模型,无需从一大堆文件中进行查找和替换。
2.什么是MVC
MVC就是Model(模型),View(视图),Controller(控制器)
Model:用于封装与应用程序业务逻辑相关的数据及数据处理方法,是web应用程序中用于处理应用程序的数据逻辑部分,Modle通常只提供功能性接口,通过该接口可以获得Modle所有功能。Modle其实就是负责数据持久化到数据库。
View:负责用户端请求,可以看成反向功能,主要处理用户交互。View承载数据逻辑。
Controller:负责从用户端收集用户输入,可以看成提供View方向功能,主要处理用户交互。
MVC设计模式是一种软件设计的典范,用一种业务逻辑,使数据,界面线束分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入,处理输出功能在一个逻辑的图形化界面中。
MVC核心思想就是解耦。
MVC优点:降低各模块之间的耦合性,方便变更,更容易重构代码,最大程度实现了代码的重用。
下面是MVC的设计模式:
3.MTV和MVC的联系与区别
本质上来说MVC和MTV没什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些与不同。(MTV模式中T对应V,MVC模式中V对应C)
注意:Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Modle和Template。
下图是甬道图:
1.当用户使用URl,通过控制器匹配相应的视图。
注意:可以看到在这一次的信息传递中跨过了模板,那么为什么为什么模板夹在视图(View)和控制器(Controller)中间呢?因为最终的结果要以模板的形势展现给用户。但是模板不是用户输入URL以后就产生的东西。
2.匹配相应的视图后再去Modles里取数据。
3.Modles从数据库中提取数据。
注意:这一步可以单独在写一个持久化,Modle和数据库可以不在一个服务器中。
4.Modles将数据反馈给视图。
5.Views找到对应的模板,然后模板再把Views里的数据渲染到模板里。
6.模板将成型后的html文件呈现给用户。