MTV: Django眼中的MVC
URLconf+MTV:Django眼中的MVC
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相关推荐
- 【Django】MTV(Django)模型
MTV(Django)模型 MVC模型 MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视 ...
- Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)
MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...
- Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式
图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数,必须使用reverse解析. choices用法 使用场景:能列举完全的数据 #使用方法:xxx_cho ...
- 《Django实战系列》
这个实战系列暂时就告一段落了,时间和能力的关系,有些地方写的不够清楚明白,代码也没有整理出来.未尽事宜将在以后逐步补全. 希望通过这个系列,你能够掌握使用Django开发一个web应用的基本过程.现在 ...
- Django之MVC框架与MTV框架详解
Django框架简介 MVC框架和MTV框架(了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图 ...
- 【Django框架设计模式】MVC模式与MTV模式区别
在Django中的MTV模式是MVC模式的迁移,其中MTV模式中将MVC模式中的V(视图)= V(视图)+ T(模板). MVC设计模式 MVC,是模型(Model).视图(View).控制器(Con ...
- Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...
数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...
- Django基础知识MTV
Django简介 Django是使用Python编写的一个开源Web框架.可以用它来快速搭建一个高性能的网站. Django也是一个MVC框架.但是在Django中,控制器接受用户输入的部分由框架自行 ...
- python mvc框架_MVC其实很简单(Django框架)
Django框架MVC其实很简单 让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同. 下面就是通过使用Django来完成以上功能的例子: 首先,我们 ...
最新文章
- 华为200W年薪应届博士刷屏后,快手拉出了一个排的顶级名校工程师
- pjsip在没有mic的情况下听到对方的声音
- python3编程教学_Python3 网络编程
- 行云万里,转型未来 | 行云创新受邀参加2019中国.NET开发者峰会
- 语音识别热词_出门问问 TWS 耳机语音交互解决方案
- Study之2 Glance相关操作-devstack
- 罗永浩:6亿债务,已还了4个亿;Python 3.9指日可待|极客头条
- UOS家庭版(21.2)安装SecureCRT(scrt-9.1.1-2638.ubuntu20-64.x86_64.deb)无法运行问题
- 中英文1:2等宽字体
- 8. Numpy的索引和切片 (Indexing and Slicing)
- 解决OneNote无法联网
- 2020软件工程专硕考研经验指导
- Matplotlib常见图形绘制(折线图、散点图 、柱状图 、直方图 、饼图 、条形图)
- 介绍lookup函数十大常用的用法
- Android常用面试题大全
- ORACLE 11g自带DBMS函数包
- 关于BMP格式图片在终端显示的具体做法(超详细)
- div包video在某些电脑或者浏览器上出现黑边
- 希捷 sshd 微型计算机,总结:希捷SSHD薄盘的优/缺点_希捷 Laptop Thin 500GB 5400转 8GB混合硬盘_内存硬盘评测-中关村在线...
- Python安装词云库wordcloud一文搞懂
热门文章
- LeetCode Hot100 ---- 滑动窗口专题
- TensorFlow 2.0快速上手指南12条:“Keras之父”亲授 | 高赞热贴
- Opencv3编程入门学习笔记(三)之访问图像像素的三种方法
- adb shell 调试 Android 串口
- 检测和语义分割_分割和对象检测-第1部分
- build libusb for Android
- 欢迎使用CSDN-markdown编辑器1212131
- 张爱玲《小团圆》的备忘和感想 (一)
- layer中嵌套的页面如何操作父页面_layui框架中layer父子页面交互详细解说
- 华为 原生android 6.0,安卓6.0原生桌面轻体验,我的手机从未如此流畅过