MVC模型和MTV模型
MVC模型
MVC 设计模型是一种使用 Model View Controller( 模型-视图-控制器)设计创建 Web 应用程序的模式。
Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图):是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器):是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC的优缺点
优点:
把业务逻辑全部分离到Controller中,模块化程度高。当业务逻辑变更的时候,不需要变更View和Model,只需要Controller换成另外一个Controller就行了 。
观察者模式可以做到多视图同时更新。
缺点:
Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,Controller业务逻辑的正确性是无法验证的:Controller更新Model的时候,无法对View的更新操作进行断言。
View无法组件化。View是强依赖特定的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了。因为不同程序的的Domain Model是不一样的
MTV模型
FLask用的是MTV的模式
所谓的MTV ( Model–Template–View ),翻译一下就是模型、模板、视图。
一般是用户通过浏览器向我们的服务器发起一个请求(request),
这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
Django的MTV模式
Django的MTV模式的本质和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义有些不同,
Django的MTV分别是:
M 带包模型(Model) 负责业务对象和数据库的关系映射(ORM)
T 代表模板(Template) 负责如何把页面展示给用户(html)
V 代表视图 (View) 负责业务逻辑 并在适当时候调用Model和Template
除了以上三层外,还需要一个URL分发器、他的作用是将一个个URL的页面请求分发给不同的View处理,web服务器(中间件)收到一个http请求
1.Django在URLconf里查找对应的视图(view)函数来处理http请求
2.视图函数调用相应的数据模型来存储数据、调用相应的模板向用户展示页面
3.视图函数处理结束后返回一个http的相应给web服务器
4.web 服务器将响应发送给客户端
MTV的响应模式如下:
1,中间件接收到一个http请求
2,django在url路由系统中查找对应的视图来处理http请求
3,视图函数调用对应的model模型来存储数据、调用相应的模板来展示页面
MVC模型和MTV模型相关推荐
- 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现
情感分析的描述.基于词袋模型和word2vec模型的情感分析实现 以购物评论为例: # 读入原始数据集 import pandas as pddfpos = pd.read_excel('../dat ...
- R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能
R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录
- utxo模型_什么是UTXO?简析账户/余额模型和UTXO模型
在比特币社区内,有一种这样的说法:其实并没有比特币,有的只是UTXO.还有一种说法是:如果理解了UTXO,你就理解了比特币. 这两种说法虽然都有不同程度的夸张,但足以体现UTXO之于比特币的重要性.既 ...
- 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 [word2vec]篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模 ...
- 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
文章目录 CBOW 模型 基本结构 目标函数 梯度计算 Skip-gram 模型 基本结构 梯度计算 优缺点分析 系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 ...
- 基于 OData 模型和 JSON 模型的 SAP UI5 表格控件行项目的添加和删除实现
这是 Jerry 2021 年的第 62 篇文章,也是汪子熙公众号总共第 339 篇原创文章. 龟虽寿曹操神龟虽寿,犹有竟时:腾蛇乘雾,终为土灰.老骥伏枥,志在千里:烈士暮年,壮心不已.盈缩之期,不但 ...
- lr模型和dnn模型_建立ML或DNN模型的技巧
lr模型和dnn模型 机器学习 (Machine Learning) Everyone can fit data into any model machine learning or deep lea ...
- 「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型
Walston-Felix模型和COCOMO Ⅱ模型 序言 一.Walston-Felix模型 1. 公式 2. 举例 二.COCOMO模型(Constructive Cost Model) 1. 模 ...
- Reactor模型和Proactor模型:同步IO与异步IO
Table of Contents 服务端的线程模型 2种fd 3种事件 Reactor模型-同步I/O 1.单Reactor单线程模型 2.单Reactor多线程模型 3.主从Reactor多线程模 ...
最新文章
- 2019年1月份访问量超过1千的文章
- 总结 | 如何测试你自己的 RubyGem
- SQL各种join用法
- 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
- Istio 中的多集群部署与管理
- power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构
- charles 安装 ssl_「从零开始Python爬虫」1.7.1 Charles的安装与配置
- java 解析ppt动画_上映17天,姜子牙口碑一路狂跌,但这份PPT让它又火了!
- jaxp与dom4j遍历xml树
- 2018.09.17 atcoder Digit Sum(数论)
- jQuery实现彩色云标签
- 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
- 拓端tecdat|R语言Meta分析效应量
- DXL之通过程序修改Domino的设计
- java程序设计六大原则
- java上传微博图床,GitHub - echisan/wbp4j: Simple Java Api for 微博图床,使用简单的api即可完成上传图片...
- 计算机语言有许多种其中与硬件直接相关的是,【单选题】计算机语言有许多种,其中与硬件直接相关的是
A. 机器语言
B. 网络语言
C. 高级语言
D. 自然语言...
- Dr.com 新版 Ver 5.2.0 本地 密码 读取 查看 破解
- MPP架构是什么?看这一篇就行了。。
- 苹果手机经常开低电量模式,对电池会有影响吗?