MTV: Django眼中的MVC

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

createbitmap导致的内存泄漏如何处理_C++ 如何避免内存泄漏,一篇就够

前言近年来,讨论 C 的人越来越少了,一方面是由于像 Python,Go 等优秀的语言的流行,另一方面,大家也越来越明白一个道理,并不是所有的场景都必须使用 C 进行开发。Python 可以应付大部分对性能要求不高的场景…

Visio绘制功能分解图

为什么要绘制功能分解图? 对于编程人员来说,具体分配任务的时候,必须知道自己要做什么,必须了解系统的大体框架。功能分解图可以帮助我们理清程序的框架,便于大局观的掌握。 用Visio2010创建功能分解图 1、选择模版 2、…

Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具(转)

转自:http://www.csdn.net/article/2013-05-02/2815116-introduce-from-mozilla-heka-go摘要:一直崇尚开源的Mozilla近日释放了Heka测试版——插件架构,Go编写。在支持使用Go扩展功能的同时,还通过允许“Sandboxed Filters”提供了…

cocos2d学习笔记2——学习资源

1. 视频 找了好几个视频,有一些讲得好的文件资源没有,后来终于找到一个讲得不错还有文件资源的,还有高清下载地址,虽然是2.2版本的,但是确实能学到不少东西,对用cocos2d做游戏有了基本的印象,对…

深究标准IO的缓存

前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了几篇文章看看&#x…

环境变量_配置JAVA环境变量

本文标识 : J00001本文编辑 : YiKi编程工具 : IDEA阅读时长 : 3分钟什么是环境变量?环境变量是在操作系统中一个具有特定名字的对象, 它包含了一个或者多个应用程序所将使用到的信息。为什么要配置环境变量?为了方便在控制台编译和运行java程序,不…

GotFocus和PreviewLeftButtonDown事件

当TextBox获得焦点后,其中的文字会被全选。通过GotFocus和PreviewLeftButtonDown事件,就可以模拟上述行为。 如果用户只是用键盘操作,GotFocus事件就足够了。 如果使用鼠标操作,就要用到2个事件了。TextBox会将光标放在鼠标单击的…

模式主节点ORACLE DG介绍(物理无实例)

在本文中,我们主要介绍模式主节点的内容,自我感觉有个不错的建议和大家分享下 DG的三种模式: 硬件以及操纵系统需求: 每日一道理 流逝的日子像一片片凋零的枯叶与花瓣,渐去渐远的是青春的纯情与浪漫。不记得曾有多少雨飘在胸前风响在耳畔&…

分布式消息队列 Kafka

分布式消息队列 Kafka 2016-02-25 杜亦舒Kafka是一个高吞吐量的、分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐、可扩展、分布式等特点 适用场景 活动数据统计活动数据包括页面访问量(Page View)、被查看内容方面的…

漫游飞行_手机“飞行模式”为何没被淘汰?内行人坦言:其实是你不会用!

随着科技的不断创新,目前市面上出现的手机款式多种多样,品牌也非常多,有华为、苹果、三星和小米等等。手机的屏幕也是五花八门,有刘海屏、水滴全面屏等,这些屏幕之间都各有不同。而且手机的更新换代速度很快&#xff0…

multiselect多选下拉框

具体实现 <input type"hidden" id"q_dueDay" name"q_dueDay" value"${baseQueryBean.q_dueDay}">//这个为隐藏域后台直接使用这个为参数 <select id"example" name"example" multiple"multiple&qu…

序列元素IT面试题——判断合法出栈序列

本文纯属个人见解&#xff0c;是对前面学习的总结&#xff0c;如有描述不正确的地方还请高手指正~ 在技巧笔试口试上&#xff0c;我们常常会碰到这样一类题型&#xff0c;如给你一个入栈序列&#xff0c;然后再让你判断几个序列是否有可能为它的出栈序列&#xff0c;如&#xf…

scikit-learn点滴

scikit-learn点滴 scikit-learn是非常漂亮的一个机器学习库,在某些时候,使用这些库能够大量的节省你的时间,至少,我们用Python,应该是很难写出速度快如斯的代码的. scikit-learn官方出了一些文档,但是个人觉得,它的文档很多东西都没有讲清楚,它说算法原理的时候,只是描述一下,除…

background image

http://www.ajaxblender.com/bgstretcher-2-jquery-stretch-background-plugin-updated.html http://blog.dvxj.com/pandola/jQuery_bgStretcher.html 转载于:https://www.cnblogs.com/eebb/p/4077231.html

怎样搭建Android开发平台(转)

Android是基于Linux内核的软件平台和操作系统&#xff0c;是Google在2007年11月5日公布的手机系统平台&#xff0c;早期由Google开发&#xff0c;后由开放手机联盟&#xff08;Open Handset Alliance&#xff09;开发。 它采用了软件堆层&#xff08;software stack&#xff0c…

mvn deploy 推送到私有仓库,注意当前日期

由于更改了本机系统时间到过去的一个时间&#xff0c;导致mvn deploy推送到私有仓库后&#xff0c;该更新的jar包时间戳比较旧&#xff0c;客户端不能更新得到新的jar包。转载于:https://www.cnblogs.com/silva/p/6264458.html

我的世界1.7.10java32位_我的世界1.7.10中文版

不知道怎么下载&#xff1f;点我游戏介绍《我的世界1.7.10》中整个世界由各种方块构成&#xff0c;玩家可以破坏它们&#xff0c;也可以用自己的方块随意建造东西。为了在游戏里生存和发展&#xff0c;玩家需要通过伐木、挖矿、捕猎等方式获取资源&#xff0c;并通过合成系统打…

python程序在函数内执行得更快

http://www.cnblogs.com/nepaul/archive/2012/07/15/2592179.html 为什么Python程序在函数内执行得更快&#xff1f;&#xff08;来源StackOverflow&#xff09; 考虑下面的代码&#xff0c;一个在函数体内&#xff0c;一个是全局的代码。 函数内的代码执行效率为 1.8s 1234def…

USER_EXIT

1、md04的用戶出口 M61X0002 2、me21n/me22n的用戶出口 MM06E005 MBCF0002 3、migo 的用戶出口&#xff1a; MBCF0009 MBCF0002-> EXIT_SAPMM07M_001 4、co11n 的用户出口&#xff0c;发料不足不允许报工时 EXIT_SAPLCORF_104 查找用户出口的函数&#xff1a; MODX_FUNCTION…

subject.login(token)是如何确认账号密码的_教你如何删除、关闭、注销微信小程序...

微信小程序是我们日常生活中经常会接触到的工具&#xff0c;打开小程序后&#xff0c;它就会留在我们微信的”“发现-小程序”栏。很多人并不知道该如何删除、关闭小程序&#xff0c;所以今天就跟大家科普下相关问题。1.如何删除小程序首先&#xff0c;打开微信界面&#xff0c…