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模型相关推荐

  1. 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现

    情感分析的描述.基于词袋模型和word2vec模型的情感分析实现 以购物评论为例: # 读入原始数据集 import pandas as pddfpos = pd.read_excel('../dat ...

  2. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  3. utxo模型_什么是UTXO?简析账户/余额模型和UTXO模型

    在比特币社区内,有一种这样的说法:其实并没有比特币,有的只是UTXO.还有一种说法是:如果理解了UTXO,你就理解了比特币. 这两种说法虽然都有不同程度的夸张,但足以体现UTXO之于比特币的重要性.既 ...

  4. 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型

    系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 [word2vec]篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模 ...

  5. 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型

    文章目录 CBOW 模型 基本结构 目标函数 梯度计算 Skip-gram 模型 基本结构 梯度计算 优缺点分析 系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 ...

  6. 基于 OData 模型和 JSON 模型的 SAP UI5 表格控件行项目的添加和删除实现

    这是 Jerry 2021 年的第 62 篇文章,也是汪子熙公众号总共第 339 篇原创文章. 龟虽寿曹操神龟虽寿,犹有竟时:腾蛇乘雾,终为土灰.老骥伏枥,志在千里:烈士暮年,壮心不已.盈缩之期,不但 ...

  7. lr模型和dnn模型_建立ML或DNN模型的技巧

    lr模型和dnn模型 机器学习 (Machine Learning) Everyone can fit data into any model machine learning or deep lea ...

  8. 「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型

    Walston-Felix模型和COCOMO Ⅱ模型 序言 一.Walston-Felix模型 1. 公式 2. 举例 二.COCOMO模型(Constructive Cost Model) 1. 模 ...

  9. Reactor模型和Proactor模型:同步IO与异步IO

    Table of Contents 服务端的线程模型 2种fd 3种事件 Reactor模型-同步I/O 1.单Reactor单线程模型 2.单Reactor多线程模型 3.主从Reactor多线程模 ...

最新文章

  1. 2019年1月份访问量超过1千的文章
  2. 总结 | 如何测试你自己的 RubyGem
  3. SQL各种join用法
  4. 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
  5. Istio 中的多集群部署与管理
  6. power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构
  7. charles 安装 ssl_「从零开始Python爬虫」1.7.1 Charles的安装与配置
  8. java 解析ppt动画_上映17天,姜子牙口碑一路狂跌,但这份PPT让它又火了!
  9. jaxp与dom4j遍历xml树
  10. 2018.09.17 atcoder Digit Sum(数论)
  11. jQuery实现彩色云标签
  12. 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
  13. 拓端tecdat|R语言Meta分析效应量
  14. DXL之通过程序修改Domino的设计
  15. java程序设计六大原则
  16. java上传微博图床,GitHub - echisan/wbp4j: Simple Java Api for 微博图床,使用简单的api即可完成上传图片...
  17. 计算机语言有许多种其中与硬件直接相关的是,【单选题】计算机语言有许多种,其中与硬件直接相关的是 A. 机器语言 B. 网络语言 C. 高级语言 D. 自然语言...
  18. Dr.com 新版 Ver 5.2.0 本地 密码 读取 查看 破解
  19. MPP架构是什么?看这一篇就行了。。
  20. 苹果手机经常开低电量模式,对电池会有影响吗?

热门文章

  1. CSGO饥荒服务器搭建保姆级教程
  2. Android 之Loader(加载器)
  3. CUIT智能车竞赛总结
  4. python制作连点器_python群聊工具实现(上)
  5. FPGA verilog can mcp2515 altera xilinx工程 代码 程序
  6. Gradle –如果测试失败,如何继续构建
  7. 手动封装JS库jQuery
  8. Nim中文社区 官网现已上线!
  9. 今晚为阿里工程师疯狂打call!
  10. LLVM每日谈之三十七 Brief Intro to LLVM Backend (HelloLLVM杭州站分享PPT)