`
luliangok
  • 浏览: 816398 次
文章分类
社区版块
存档分类
最新评论

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的,或者是另类的。






分享到:
评论

相关推荐

    Django-1.11.9.tar.gz下载

    1. **MVC(Model-View-Controller)架构**:Django遵循MVC模式,但在Django中称为MTV(Model-Template-View)。模型(Model)处理数据和数据库交互,视图(View)处理业务逻辑和用户交互,模板(Template)负责渲染...

    django 1.6.5

    1. **MVC设计模式**:Django 遵循 Model-View-Controller(MVC)架构模式,但在这里称为 Model-Template-View(MTV)。Model 处理数据模型,Template 负责视图展示,View 处理请求和响应。 2. **ORM系统**:Django ...

    Django-1.2.5.tar.gz

    Django遵循MVC(Model-View-Controller)架构模式,但在官方文档中更常被称为MTV(Model-Template-View),强调了数据模型、模板系统和视图的重要性。 2. Django 1.2.5 特性: - 安全性:Django 1.2.5提供了一套...

    Codevs-backend:Django后端

    1. MVC(Model-View-Controller)架构:Django遵循MVC模式,但稍有不同,其为MTV(Model-Template-View)模式。Model处理数据模型,View负责视图逻辑,Template则关注页面渲染。 2. URL路由:Django通过URLconfs将...

    Django是一个开放源代码的Web应用框架

    Django遵循MVC模式,但稍有不同,它将“视图”(View)与“模板”(Template)分开,形成了MTV(模型-模板-视图)模式。模型负责数据处理,模板负责展示,视图则协调数据与展示之间的交互。这种分离让代码更易于...

    Django中文版.chm

    1. **MVC(Model-View-Controller)模式**:Django采用了MTV(Model-Template-View)架构模式,其中Model负责数据模型,Template处理视图展示,View则处理业务逻辑和数据呈现。 2. **模型(Model)**:Django中的...

    django 资料

    它遵循MVC(模型-视图-控制器)架构模式,同时也引入了自身的MTV(模型-模板-视图)设计模式,使得Web应用的开发变得更加便捷。 ### Django核心组件 1. **模型(Model)**:Django中的模型是数据结构的定义,与...

    Django-1.2.7

    Django遵循MVC设计模式,但在Django中称为MTV(Model-Template-View)。模型(Model)负责数据的处理和存储,模板(Template)处理页面展示,视图(View)则作为业务逻辑层,协调模型和模板的交互。 2. 模型...

    Django Web

    1. **MVC模式**:Django采用MTV(Model-Template-View)设计模式,与传统的MVC类似,但更注重数据模型、模板和视图的分离,以实现业务逻辑和展示层的解耦。 2. **模型(Model)**:模型是Django中的核心部分,用于...

    Django-1.6.11.tar

    1. **MVC(Model-View-Controller)架构**:Django遵循MTV(Model-Template-View)模式,这与传统的MVC类似,但更专注于Web开发。Model处理数据模型,View负责业务逻辑和数据呈现,而Template则用于定义页面布局和...

    jango学习资料

    1. **MTV模型(Model-Template-View)**:Django遵循MVC(Model-View-Controller)设计模式的变体MTV。Model负责数据模型,Template处理视图呈现,View处理用户交互逻辑。 2. **ORM(Object-Relational Mapping)**...

    Django-master.rar

    1. **MVC(Model-View-Controller)架构**:Django遵循MTV(Model-Template-View)模式,与MVC类似,但更侧重于数据模型、模板渲染和视图处理。模型(Model)负责数据处理,模板(Template)处理用户界面,视图...

    Django技术介绍 (2).pdf

    Django 是一个基于 Python 的高性能Web应用框架,它遵循MVC设计模式,但在Django中被称为MTV(Model-Template-View)模式。这个框架的主要目标是简化数据库驱动的网站开发,强调代码重用和快速开发,同时也遵循DRY...

    Django源码剖析注释版本

    在Django的源码中,我们可以看到它采用了MVC(模型-视图-控制器)的设计模式,但实际上,Django将其称为MTV(模型-模板-视图)。以下是对Django关键组件的详细解析: 1. **模型(Model)**:这是Django处理数据库的...

    Django课件笔记详解

    - **MVC(Model-View-Controller)架构**: Django遵循MTV(Model-Template-View)模式,其中Model代表数据模型,Template是视图展示,View负责业务逻辑和数据处理。 - **ORM(Object-Relational Mapping)**: ...

    Django_course_project:Django在线商店培训项目

    1. **Django基础知识**:首先,我们需要了解Django的基本架构,包括MVC(模型-视图-控制器)设计模式,以及Django中的MTV(模型-模板-视图)模式。这将涉及到模型定义数据结构,视图处理请求和响应,以及模板渲染...

    Python库 | Django-1.10b1.tar.gz

    2. **MVC(模型-视图-控制器)**:Django采用MTV模式,模型负责处理数据,视图处理逻辑,模板负责展示数据,分工明确。 3. **内置功能**:Django提供了许多内置功能,如认证系统、权限管理、表单处理、URL路由等,...

    Django技术介绍 (2).docx

    Django 是一个基于 Python 的高性能Web应用框架,它遵循MVC(模型-视图-控制器)设计模式,但在Django中通常称为MTV(模型-模板-视图)。MTV模式下,Django的主要组件包括模型(Model)、模板(Template)和视图...

Global site tag (gtag.js) - Google Analytics