Django新手入门(四)——Django的MTV架构

Django使用的MTV(大约可以模拟到MVC)架构。为了把数据抽象化,Django把数据的存取和显示区分为Model、Template以及View,分别对应models.py、template文件夹以及views.py这些文件。本文将详细介绍Django的MTV架构,以便读者在整体上把握Django开发。

MTV和MVC

MVC架构

MVC架构是设计人员在大部分框架或大型程序项目中都很喜欢使用的一种软件工程架构模式,它把一个完整的程序或网站项目(广义来说就是软件)分成3个主要的组成部分分别是Model模型、View视图以及Controller控制器。也就是希望一个项目可以让内部数据的存储操作方式、外部的可见部分以及过程控制逻辑相互配合运行,进一步简化项目的复杂度以及对未来的可扩充性和软件的可维护性,有助于不同的成员相互之间的分工。

各模块的作用如下:

模块作用
Model数据模块包含系统中的数据内容,通常以数据库的形式来存储,如果这些内容有变动,就会通知View实时更改显示的内容,一些处理数据的程序逻辑也会放在这里
View视图模块创建和用户之间的界面,把用户的请求传送给Controller,并按照Controller的要求把来自Model的数据显示出来
Controller控制模块派发View传来的用户请求,并按照这些请求处理数据内容以及设置要显示的数据

把一个系统拆成这样有几个好处。其中最重要的是可以大幅地降低系统的复杂性,因为它很明确地描述了系统中不同功能区块分工。同时,也因为这3个部分的明确分工,所以在一个由许多成员分工实现的大型项目中,可以更容易地进行团队合作,例如负责数据库的人员、外观设计的人员以及程序编写人员在协作时有更多弹性。

MTV架构

MVC架构把软件项目区分为数据、显示以及控制器3个部分,这样的分类大部分指的是传统的软件系统,对网站而言,网页服务器在收到远程浏览器的请求时,不同的网址以及连接的方式其实隐含了部分控制逻辑,因此很难把Django这类网站框架严谨地定义为上述3个部分,因此Django另外设计了MTV(Model,Template,View)。

Django基本上使用MVC架构,但是网页服务器本身在派发工作的时候就隐含了控制的逻辑,网站框架中Template模板文件的套用又是最常被使用的网页显示技巧,所以Django主要的架构形成了使用Model、Template和View三个部分的搭配,这3个部分分别对应网站的数据存储model.py、网站的模板文件组(一般是放在templates文件夹下的html文件)以及控制如何处理数据程序逻辑的views.py,其中许多控制逻辑也被放在整个Django Framework中(如urls.py的设置等)。

在这里插入图片描述
用户在浏览器下达request,这个request会被先送到网站服务器中做分派工作,这个分派的工作制定在urls.py中完成。每一个分派的工作都会被设置成views,py中的函数,也就是主要处理数据的逻辑,在views.py中完成。views.py中处理的数据依靠models.py来操作。

M、T和V

M——Model——models.py

Model是Django表示数据的模式,以Python的类为基础在models.py中设置数据项与数据格式,基本上每个类对应一个数据库中的数据表。在后端Django会自动把这个类中的设置对应到数据库系统中,不管使用的是哪一种在数据库。因此,定义每个数据项时,除了数据项名称外,也要定义此项目的格式以及这张表和其他表格相互之间的关系(即数据关联)。定义完毕后,网站的其他程序就可以使用Python语句来操作这些数据内容,不用关心实际使用的SQL指令以及使用的是哪一种数据库。在models.py中定义所有需要用到的数据格式,一般是以数据库的形式来存储的,定义后的Model数据类要把它import到views.py中。

T——Template——template文件夹

把取得的数据用美观且有弹性的方式输出,是在Template中处理。使用templates来做每个网页的外观框架,送至template中要被使用的数据尽量是可以直接显示的简单形式,不要试图在template文件中使用复杂的方法处理这些送进来的变量,如果需要对变量进行更复杂的运算,那么这些工作应该放在views.py中完成。

V——View——views.py

把数据取出来,或是如何存进去等程序逻辑,则是在View中,也就是在view.py中处理。View是Django最重要的程序逻辑所在的地方,网站大部分程序设计都放在这里。这里放了许多要操作的数据,以及安排哪些数据需要被显示出来的函数,在函数中把这些数据传送给网页服务器或交由Template的渲染器后再送到网页服务器中。这些放在views.py中的函数,再由urls.py中的设计进行对应和派发。

Django MTV架构下网站开发步骤

  • 需求分析不可少,一定要具体列出本次网站项目所要实现的目标,可能包括简单的页面草图与功能方块图等。
  • 数据库设计。在需求分析后,开始创建数据模块前,网站中所有会用到的数据内容、格式以及各个数据之间的关系一定要理清,最好事先把要创建的数据表都确定清楚,减少开始设计程序后修改Model的工作。
  • 了解网站的每一个页面,并设计网页模板(.html)文件。
  • 使用virtualenv创建并启用虚拟机环境。
  • 使用pip install安装django。
  • 使用django-admin startproject生成项目。
  • 使用python manage.py startapp创建app。
  • 创建templates文件夹,并把所有网页模板(.html)文件都放在此文件夹中。
  • 创建static文件夹,并把所有静态文件(图像文件、.css文件以及.js文件等)都放在此文件夹中。
  • 修改settings.py文件,把相关文件夹设置都加入,也把生成的app名称加入INSTALLED_APPS序列中。
  • 编辑models.py创建数据库表格。
  • 编辑views.py,先import在models.py中创建的数据模型。
  • 编辑admin.py,把models.py中定义的数据模型加入,并使用admin.site.register注册新增的类,让admin界面可以处理数据库内容。
  • 编辑views.py设计处理数据的相关模块,输入和输出都通过templates相关的模块操作获取来自于网页的输入数据,以及显示.html文件的网页内容。
  • 编辑urls.py,先import在views.py中定义的模块。
  • 编辑urls.py,创建网址和views.py中定义的模块的对应关系。
  • 执行python manage.py makemigrations。
  • 执行python manage.py migrate。
  • 执行python manage.py runserver测试网站。
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值