MVC架构是设计人员在大部分框架或大型程序项目中都很新欢使用的一种软件工程架构模式,它把一个完整的程序或网站项目分成3个主要的组成部分,分别是Model模型 、View视图 以及Controller控制器。
这是为了让一个项目 可以让内部数据的存储操作方式、外部的可见部分以及工程控制逻辑相互配合运行,进一步简化项目的复杂度以及对未来的可扩充性和软件的可维护性,有助于不同的成员相互之间的分工。
MVC架构把软件项目区分为数据、显示以及控制器3个部分,这样的分类大部分指的是传统的软件系统,对网站而言,网页 服务器在 收到远程浏览器的请求时,不同的网址 以及连接的方式其实隐含了部分控制逻辑,因此很难把Django这类网站框架严谨的定义为上述3个部分,因此Django另外设计了MTV(Model,Template,View),
MVC架构简介
什么是MVC?
MVC是一种软件工程设计方法,它把一个要创建的系统分成3个部分,分别是Model数据模块、View视图模块以及Controller控制器模块,这3个模块之间相互配合,根据用户的操作显示出用户想要的结果。
模块种类 |
说明 |
Model数据模块 | 包含系统中的数据内容,通常以数据库的形式存储,如果这些内容有变动,就会通知View实时更改显示的内容,一些处理数据的程序逻辑也会放在这里 |
View视图模块 | 创建和用户之间的界面,把用户的请求传送给Controller,并按照Controller的要求把来自Model的数据显示出来 |
Controller控制模块 | 派发View传来的用户请求,并按照这些请求处理数据内容以及设置要显示的数据 |
把一个系统拆成这样有以下几个好处:
1.大幅降低系统的复杂性,因为它很明确地描述了系统中不同功能区块分工。
2.更容易进行团队合作,如负责数据库的人员、外观设计的人员以及程序编写人员在协作时有更多弹性
Django的MTC架构
Django基本上使用MVC架构,网页服务器本身在派发工作的时候就隐含了控制的逻辑,网站框架中Template模块文件的套用又是最被使用的网页显示技巧,所以Django主要的架构形成了使用Model、Template和View三个部分搭配,这3个部分分别对应网站的数据存储model.py、网站的模版文件组(一般放在templates文件下的html文件)以及控制如何处理数据程序逻辑的views.py,其中许多控制逻辑也被放在整个Django框架中(如urls.py的设置等),Django的MTV架构如下:
在此交够下,使用templates来做每个网页的外观框架,送至template中要被使用数据尽量是可以直接显示的简单形式,不要试图在template文件中使用复杂的方法处理这些送进来的变量,如果需要对变量进行更复杂的运算,那么这些工作应该放在view.py中完成。也就是说,即便一个人独立操作的网站,也要想象template是由不太熟悉程序设计的前端工程师复杂,如果是这样,送进来的数据越简单越好。
如图所示,在models.py中定义所有需要用到数据格式,一般是以数据库的形式来存储,定义后的Model数据类要吧它import到views.py中。主要操作流程:
1.用户在浏览器下达request
2.request会先被送到网站服务器中做分派的工作,这个分派的工作制定在urls.py中完成
3.每一个分派的工作都会被设置成views.py中的函数,也就是主要处理数据的逻辑,在views.py中完成,因此所有的urls.py中指派的函数要在urls.py的前面import才可以。