URLconf+MTV:Django眼中的MVC

MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:
             M 管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)。
             C 接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。
             V 负责把数据格式化后呈现给用户。

在《Agile Web Development with Rails》中有这样一张图对MVC模式进行了很好的解释:

Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

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

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

需要注意的是,不能简单的把 Django 视图认为是MVC控制器,把 Django 模板认为MVC视图。 
区别在于:
     Django 视图 不处理用户输入,而仅仅决定要展现哪些数据给用户;
     Django 模板 仅仅决定如何展现Django视图指定的数据。

或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf设计非常巧妙,其机制是使用正则表达式匹配URL,然后调用合适的Python函数。虽然一开始有些不习惯,但是你很快就会喜欢上它,因为URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。

转载于:https://www.cnblogs.com/s502/archive/2013/05/09/3069295.html

MTV: Django眼中的MVC相关推荐

  1. 【Django】MTV(Django)模型

    MTV(Django)模型 MVC模型 MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视 ...

  2. Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)

    MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...

  3. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

    图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数,必须使用reverse解析. choices用法 使用场景:能列举完全的数据 #使用方法:xxx_cho ...

  4. 《Django实战系列》

    这个实战系列暂时就告一段落了,时间和能力的关系,有些地方写的不够清楚明白,代码也没有整理出来.未尽事宜将在以后逐步补全. 希望通过这个系列,你能够掌握使用Django开发一个web应用的基本过程.现在 ...

  5. Django之MVC框架与MTV框架详解

    Django框架简介 MVC框架和MTV框架(了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图 ...

  6. 【Django框架设计模式】MVC模式与MTV模式区别

    在Django中的MTV模式是MVC模式的迁移,其中MTV模式中将MVC模式中的V(视图)= V(视图)+ T(模板). MVC设计模式 MVC,是模型(Model).视图(View).控制器(Con ...

  7. Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...

    数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...

  8. Django基础知识MTV

    Django简介 Django是使用Python编写的一个开源Web框架.可以用它来快速搭建一个高性能的网站. Django也是一个MVC框架.但是在Django中,控制器接受用户输入的部分由框架自行 ...

  9. python mvc框架_MVC其实很简单(Django框架)

    Django框架MVC其实很简单 让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同. 下面就是通过使用Django来完成以上功能的例子: 首先,我们 ...

最新文章

  1. 华为200W年薪应届博士刷屏后,快手拉出了一个排的顶级名校工程师
  2. pjsip在没有mic的情况下听到对方的声音
  3. python3编程教学_Python3 网络编程
  4. 行云万里,转型未来 | 行云创新受邀参加2019中国.NET开发者峰会
  5. 语音识别热词_出门问问 TWS 耳机语音交互解决方案
  6. Study之2 Glance相关操作-devstack
  7. 罗永浩:6亿债务,已还了4个亿;Python 3.9指日可待|极客头条
  8. UOS家庭版(21.2)安装SecureCRT(scrt-9.1.1-2638.ubuntu20-64.x86_64.deb)无法运行问题
  9. 中英文1:2等宽字体
  10. 8. Numpy的索引和切片 (Indexing and Slicing)
  11. 解决OneNote无法联网
  12. 2020软件工程专硕考研经验指导
  13. Matplotlib常见图形绘制(折线图、散点图 、柱状图 、直方图 、饼图 、条形图)
  14. 介绍lookup函数十大常用的用法
  15. Android常用面试题大全
  16. ORACLE 11g自带DBMS函数包
  17. 关于BMP格式图片在终端显示的具体做法(超详细)
  18. div包video在某些电脑或者浏览器上出现黑边
  19. 希捷 sshd 微型计算机,总结:希捷SSHD薄盘的优/缺点_希捷 Laptop Thin 500GB 5400转 8GB混合硬盘_内存硬盘评测-中关村在线...
  20. Python安装词云库wordcloud一文搞懂

热门文章

  1. LeetCode Hot100 ---- 滑动窗口专题
  2. TensorFlow 2.0快速上手指南12条:“Keras之父”亲授 | 高赞热贴
  3. Opencv3编程入门学习笔记(三)之访问图像像素的三种方法
  4. adb shell 调试 Android 串口
  5. 检测和语义分割_分割和对象检测-第1部分
  6. build libusb for Android
  7. 欢迎使用CSDN-markdown编辑器1212131
  8. 张爱玲《小团圆》的备忘和感想 (一)
  9. layer中嵌套的页面如何操作父页面_layui框架中layer父子页面交互详细解说
  10. 华为 原生android 6.0,安卓6.0原生桌面轻体验,我的手机从未如此流畅过