分享
基于Django的MVC框架设计与实现_杨洪涛.pdf
下载文档

ID:2367809

大小:1.57MB

页数:4页

格式:PDF

时间:2023-05-10

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 Django MVC 框架 设计 实现 洪涛
本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)基于Django的MVC框架设计与实现杨洪涛(西安思源学院 理工学院,陕西 西安 710038)摘要:Web框架是为解决Web开发中开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮助用户快速实现Web开发,并解决开发过程中遇到的常规问题。文章以Django的MVC框架为例,深入浅出地分析了MVC开发思路,并结合实际案例解析,总结出了Django MTV模式开发应用网站的一般方法。关键词:软件框架;MVC;MTV;ORM模型中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)04-0062-04开放科学(资源服务)标识码(OSID):1 引言Django是用Python语言设计的一款免费的Web开发框架,它几乎包括了Web应用的各领域,能方便快速地搭建高性能的数据库驱动网站。Django采用了通用Web开发模式的高度抽象,为复杂的编程作业提供了快速解决方案,它也是一款全能型框架,内置了许多模块,极大地方便了Web开发者。百度百科解释,“软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。”简而言之,框架就是制定一套规范或者规则,程序员在该规范或者规则下工作,好比使用别人搭好的舞台来做编剧和表演。Django就是Web开发方面优秀的框架,下面笔者就 Django 的 MVC 架构设计与实现介绍一下。2 MVC设计模式MVC是Web开发领域著名的设计模式,MVC是Model-View-Controller的缩写,其各部分含义如下:1)Model:表示数据存取层,处理与数据相关的所有事务,包括对数据表的定义和数据的增删改查等。2)View:表示视图层,是系统前端显示部分,负责显示什么和如何显示,用于向用户展示结果。3)Controller:表示控制层,主要根据从View层输入的指令来检索Model层的数据,并在该层编写代码产生结果并输出,用于处理请求、获取数据和返回结果1。MVC设计模式的请求与响应过程如图1所示,运行过程如下:1)用户通过浏览器向服务器发起Request请求,Controller层接受请求后,同时向Model层和View 发送指令;2)Model层根据指令与数据库交互并选择相应业务数据,然后将数据发送给Controller层;3)View层接收到Controller的指令后,加载用户请求的页面,并将此页面发送给Controller层;4)Controller层接收到Model和View层的数据后,将它们组织成Response响应格式发送给浏览器,浏览器通过解析把页面展示出来。MVC的三层之间紧密相连,但又相互独立,每层的修改都不会影响其他层,每层都提供了各自独立的接口供其他层调用,MVC 的设计模式降低了代码之间的耦合性,增加了模块的可重用性,这正是MVC设计模式的优点所在。3 MVC的优化设计模式MTVDjango是基于MVC构造的框架,但在MVC基础上,对控制器Controller进行了封装,增加了模块功能Template 实现前端网页,所以 Django 更关注的是模型、模板和视图,称为MTV设计模式。其各部分职责如下:1)Model:即数据存取层,与MVC中的M功能相同,负责和数据库交互,处理所有数据相关的业务,并收稿日期:2022-08-16作者简介:杨洪涛,男,高级工程师,主要研究方向为计算机网络技术、大数据技术。图1MVC设计模式示意图E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.4,February202362DOI:10.14004/ki.ckt.2023.0182软件技术本栏目责任编辑:谢媛媛Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)提供数据的增删改查。2)Template:即模板层,也叫表现层,与MVC中的V功能相同,负责封装构造要返回的HTML,处理页面的显示。3)View:即业务逻辑层,与MVC中的C功能相同,接收请求、进行业务处理和返回应答,是连通Model层和Template的桥梁。对照两种模式发现,MTV模式中,用View层取代了Controller层的位置,用Template层取代了原来View层的位置,模板可以理解成它是一个 HTML 页面,HTML页面的渲染在视图层完成。具体来说,MTV设计模式的原理如图2所示,详细运行过程如下:图2Django MTV设计模式示意图1)用户通过浏览器对服务器发起Request请求,服务器接收请求后,通过View的业务逻辑层进行分析,同时向Model层和Template层发送指令;2)Model 层与数据库进行交互,将数据返回给View层;3)Template层接收到指令后,调用相应的模板,并返回给View层;4)View层接收到模板与数据后,首先对模板进行渲染(即将相应的数据赋值给模板),然后组织成相应格式返回给浏览器,浏览器进行解析后并最终呈现给用户。通过以上两种设计模式的比较,可以得出MTV是MVC的一种细化,它将原来MVC中的V层拿出来进行分离,视图的显示与如何显示交给Template层,而View层更专注于实现业务逻辑。当然,Django是有Controller层的,只不过它由框架本身来实现,所以不用关心它,更关注于M、T 和 V。4 项目案例某中等职业学校需要开发一款B/S版的学生管理信息系统,主要功能和要求为:可新增学生信息、查询学生信息、修改学生信息、删除学生信息和浏览学生信息等。4.1 需求分析根据学生管理信息系统功能要求,可以划分如下几个模块来实现,具体为:新增学生信息模块、查询学生信息模块、修改学生信息模块、删除学生信息模块和浏览学生信息模块。由于Django是典范的MVC框架,能灵活地支持数据库,而且有强大的后台管理功能,所以以“浏览学生信息模块”为例(其他模块与之相似),讨论Django MTV模式开发的一般步骤2。4.2 项目结构与规划首先,列出本项目的目录结构,如图 3 所示。Stu_Manage是项目的主目录,其内部的manage.py文件是项目的运行入口,指定配置文件路径。下一级Stu_Manage文件夹内部的settings.py是整个项目的配置文件,是项目定制化配置。urls.py是主路由文件,通过URL控制器来处理不同的请求。wsgi.py是python服务器程序连接到web服务器的通用协议文件,用来调用App的应用。stu_reginfo是项目内的一个应用,一般每个独立的应用对应一个文件夹,目的是让分类清晰,便于项目分工。stu_reginfo目录是MTV框架的核心部分,其中admin.py 文件是 django 自带的一个 admin 管理模块,models.py是数据模型文件,views.py是处理用户请求和生成响应的视图文件。templates文件夹是保存应用程序的模板文件,一般包括html前端页面内容。到此,基于学生信息系统的MTV 框架目录结构就清楚了,各文件部分的功能及作用也就明白了,以后开发人员依照此MTV框架,只需要根据自身的需求对框架中的各个目录功能进行完善就可进行高效开发,设计出满足自己需求的各类网站。图3项目目录结构图4.3 系统设计由前面分析,得出MVC或MTV框架的大体设计流程是:1)客户端发起请求,路由对客户发起的请求进行统一处理和分发给控制层;2)控制层获取请求,访问数据层;3)数据层对数据进行增删改查,把数据返回给控制层;4)控制层获取数据,把数据调度给视图(模板);5)视图(模板)对数据进行渲染,形成html文件返回给控制层;6)控制层把渲染后的视图(模板)返回给客户端。下面以此流程为参考,完成“浏览学生信息模块”的设计。1)首先做准备工作,配置开发环境,在python命令控制台安装Django框架及mysql数据库连接驱动,命令如下:pip install django#可 指 定 版 本:pip installdjango=版本号,默认最新版63本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)pip install pymysql2)创建网站项目Stu_Manage,一个项目中可以包含多个应用,可根据功能进行划分。添加应用stu_reginfo,命令如下:django-admin startproject Stu_Managecd Stu_Manage#进入项目文件夹python manage.py startapp stu_reginfo3)实际开发中Django 项目配置是必须的,找到Stu_Manage中的settings.py文件,添加修改如下三处代码(粗体字部分)即可完成。INSTALLED_APPS=stu_reginfo,#新增应用stu_reginfoTEMPLATES=BACKEND:django.template.backends.django.DjangoTemplates,DIRS:Path(BASE_DIR,templates),#修改模板路径DATABASES=default:ENGINE:django.db.backends.mysql,NAME:Stu_Manage,#数据库名称USER:root,#数据库用户名PASSWORD:123456,#数据库密码HOST:127.0.0.1,PORT:33064)学生管理信息系统选用mysql数据库,上一步项目配置中已添加了数据库的连接参数,下面修改项目Stu_Manage中的_init_.py文件,添加数据库驱动即可。import pymysql#导入数据库驱动pymysql.install_as_MySQLdb()#可使 pymysql 提高数据库操作性能5)建立学生管理信息系统后台数据库,可进入mysql命令控制台执行如下命令完成。mysqlcreate database Stu_Manage default character set utf8;6)“浏览学生信息模块”设计MVC框架中包括一个重要的部分,就是ORM(Object Relational Mapping),它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,其作用是在关系型数据库和业务实体对象之间做一个映射,在具体操作业务对象的时候,不需要再去和复杂的SQL语句打交道,只需操作对象的属性和方法即可。简单说,ORM的主要功能为:根据对象的类型生成表结构;将对象、列表的操作,转换为SQL语句;将SQL查询到的结果转换为对象、列表。Django中的模型包含存储数据的字段和约束,对应数据库中唯一的表。在stu_reginfo应用中添加数据模型,执行数据库迁移,即完成Model(模型)设计。“浏 览 学 生 信 息 模 块”的 数 据 模 型 文 件 是stu_reginfo文件夹中的models.py,根据需求其基本字段定义如下:from django.db import modelsclass stuTab(models.Model):id=models.AutoField(primary_key=True)学 号=models.CharField(max_length=6,unique=True)姓名=models.CharField(max_length=10)性别=

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开