APP下载

基于Python与flask工具搭建可高效开发的实用型MVC框架

2019-07-15牛作东李捍东

计算机应用与软件 2019年7期
关键词:开发人员视图代码

牛作东 李捍东

(贵州大学电气工程学院 贵州 贵阳 550025)

0 引 言

随着互联网技术日新月异的发展,Web应用开发更新换代的周期不断缩短,开发人员分工精细,对开发效率也有了更高的要求,开发的产品应满足社会发展的需要。因此搭建出一个完整的Web框架[1],合理指导代码系统有序地分布,使开发者从繁重的编程中解放出来,从而专注与业务功能的研究与设计当中,提高开发效率显得尤为重要[2]。本文在Python语言下利用Flask开发工具搭建一个可满足高效开发的实用的MVC框架[3]用于开发者开发Web应用。

Python作为一种计算机程序设计语言,自从20世纪90年代初诞生至今,已被逐渐广泛应用于系统管理任务的处理和Web编程[4]。Python语言本身具有简洁性、易读性以及可扩展性,在设计上坚持清晰划一的风格,方便维护。Python作为一种高级程序开发语言,在开发过程中既支持面向过程的编程也支持面向对象的编程,同时可以忽略一些底层和设计细节,比如内存的管理、服务的调用等。由于Python是一个免费开源的语言,因此它拥有丰富强大的库,除了自身的准库以外,还支持比如PyQt(创建GUI应用程序的工具包)、PyGame(电子游戏设计工具包)、Opencv(跨平台计算机视觉库)等高质量的库,可以帮助开发人员处理各种工作,提高程序开发效率,能够更好地满足互联网快速迭代的需求。除此之外,Python语言还具有可扩展性、可嵌入性、可移植性特点[5]。

Flask诞生于2010年,是Armin ronachert使用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架,它本身相当于一个内核,其他几乎所有的功能(比如:邮件扩展Flask-Mali、用户认证Flask-Login、对象关系映射ORM等)都要用到Flask-extension来进行弹性扩展。Flask没有默认使用的数据库,你可以选择MySQL,也可以使用NoSQL,其WSGI(PythonWeb服务器网关接口Python Web Server Gateway Interface)工具箱采用Werkzeug,模板引擎使用的是Jinja2。可以说Werkzeug和Jinja2构成了Flask应用框架的核心,也正是因为如此,使得Flask自由、灵活,可扩展性强,再加上第三方库的选择面广,开发人员可以按照自己最熟练的开发经验,去结合最流行最强大的Python库来完成开发需求[6]。Flask入门相对简单,即便没有多少Web开发经验,也能很快做出网站,Flask同样能胜任大型网站的开发,此时就需要我们设计利用代码的架构。

模型-视图-控制器(Model View Controller,MVC)框架是一种将应用程序的逻辑层和视图层相分离设计,并通过控制层连接的开发模式[7]。MVC框架的结构如图1所示,模型、视图、控制器三个核心部件构成了整个Web应用程序。视图层的功能和作用是为用户提供一个交互的平台,完成Web应用与用户之间的信息交流。模型层用来建立数据和业务规则,组成了整个应用的逻辑组成部分。控制器层承担起了调用视图层和模型层协同工作,根据用户的指令或信息,建立相应的逻辑操作来执行用户的需求。因此根据用户在Web交互界面中的相关操作或请求,比如点击控制操作按钮、发送数据清单等,此时的控制器对这些原始的操作和数据不做任何的处理,它只按照开发人员设计的业务需要,将接收到的请求进行判断从而调用相应的模型功能对请求进行处理,处理完成的结果会安排具体的视图层模块进行显示[8]。

图1 MVC框架结构图

根据Web开发的特点,MVC框架的设计目的是在进行项目开发时合理分工,同时开发,避免各功能模块之间相互影响,相互依赖,从而加速开发进度,节约时间和成本。选择一个实用的MVC框架对Web开发起到了事半功倍的效果,不仅可以大大缩短开发时间,提高开发效率,尤其是在开发大型Web项目的时候。将视图层和业务逻辑层分离,专人专管,更加有利于Web项目的维护和更新,方便项目的工程化、系统化管理[9]。

1 开发环境部署

本次MVC框架的搭建是在Windows操作系统下进行,工程管理使用Python IDE开发工具Pycharm,解释器版本为Python 3.7.1。综合各种开发需要,本框架建议采用MySQL数据库[10]。MySQL是由瑞典MySQL AB公司开发的一个关系型数据库管理系统,该数据库将数据分别保存在不同的表单中,从而增加了存取速度并且提高了对数据操作的灵活性与可靠性,使其在Web开发方面得到了广泛的应用,拥有大量的用户[11]。此外还需要安装Pip3,Pip3是一个现代的、通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。在安装完上述软件后,还需要在Pycharm的终端(Terminal)窗口通过”pip3 install”命令安装如下MVC框架所用到的基本扩展包[12]:

(1) 安装Flask,安装命令:

pip3 install flask

(2) 安装数据库相关扩展包,安装命令:

pip3 install flask-sqlalchemy

pip3 install flask-mysqldb

pip3 install mysqlclient

Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是为了高效和高性能地来访问数据库而建立的一个功能非常强大的关系数据库框架。如果需要连接MySQL数据库,则需要用到Flask-MySQLdb,而Flask-MySQLdb又依赖mysqlclient。

(3) 安装Flask Script模块,安装命令:

pip3 install flask_script

在软件开发阶段,通过Flask Script扩展包可以实现以命令行的形式来完成对Flask的相关操作,利用插入的外部脚本,定制一个Python shell,配置数据库,启动定时任务等,隔离Web应用与开发环境的依赖关系,根据不同的开发环境方便开发人员启动和调试工程。执行以上安装操作后,可通过“pip list”命令来查看并确认已安装的扩展包。

2 MVC框架搭建

2.1 建立MVC工程目录

本文设计的MVC框架的工程目录结构如图2所示,在common目录下存放整个开发项目的公用部分,包括LIBS文件夹,用来存放公用的方法、类等;MODEL文件夹,用来存放所有的数据库的ORM(Object Relational Mapping)。Config目录下存放工程在不同的环境下运行的配置文件,比如base_setting用来做基础配置,local_setting是在本地开发环境下的配置,production_setting是发布环境下的配置。在docs目录下建立文档文件用来存放数据变更信息等。jobs目录下存放Web应用的定时任务程序,比如定时更新等。application.py文件中封装Flask的全局变量,包括app对象,数据库对象等。manager.py文件是对整个应用程序的启动入口的管理和配置,设置一些启动命令、启动参数等。www.py文件用来完成对整个HTTP模块的相关初始化操作。Web目录下存放整个MVC框架的核心部分,包括controllers路径下用来存放的是与C(控制器)层相关逻辑设计,建立应用与用户沟通的桥梁,引导用户输入信息,读取视层传输的数据列表,根据程序逻辑调用相关的辑模型层模块对数据进行处理。static文件夹和templates文件夹分别用来存放静态文件和模板文件,完成V(视图)层的相关工作,处理数据显示的部分,并向用户展示处理结果信息。

图2 MVC框架的工程目录结构图

本MVC框架的工程目录设计清晰明了,各部分功能明确,当开发人员使用此MVC框架进行开发时,只需要根据自己开发任务的要求,对各个目录功能进行扩展和完善,即可高效开发。

2.2 MVC框架的简易配置

第一步封装应用对象和配置程序启动入口,如图3所示,在application.py文件中首先从工具包中导入所需要用到的类。为方便对整个应用进行统一的配置和管理,在程序第7行代码封装一个Application类,做一些基础配置。第17行和18行分别完成了一个数据库实例db和Flask应用实例app。如图4所示,在manager.py文件中第4行代码增加了一个runserver启动方法,并且配置了相关的启动参数,比如ip监听范围、端口号、调试模式、重装载等。第14行代码是将本文件作为启动文件,并且通过try/exception可以打印程序运行中出现的异常信息。

图3 application.py文件代码

图4 manager.py文件代码

第二步创建页面视图,在”/Web/control/”目录下创建一个index.py文件用来完成一个页面的相关设计。如图5所示,在创建视图的时候为了方便视图的路由的清晰化管理,我们引入了Flask的Blueprint(蓝图)功能,然后在程序第6行创建一个route_index的实例,第7行通过装饰器引入一个路径,接下来定义一个视图函数index()完成对页面的包装,这里只是简单地通过return语句向用户返回一段信息。

图5 Index.py文件代码

第三步将创建的页面注册到路由中,打开MVC框架中的www.py文件写入相关代码。如图6所示,首先要从application.py文件中导入已创建的app实例,从上一步中创建的idex.py文件中导入route_index实例,然后调用app.register_blueprint方法,将route_index注册到程序路由中,通过url_prefix参数可以设置注册的路由位置,这里配置成‘/’表示根路径。

图6 www.py文件代码

2.3 启动MVC框架应用

通过以上操作完成相关代码设计和软件配置后,在Pycharm开发工具的Terminal(终端)窗口中通过输入启动命令:python manager.py runserver即可启动MVC框架应用。成功启动MVC框架应用信息如图7所示。为了检查应用启动的情况,在浏览器中输入:192.0.0.1:8999(本地访问的IP地地址以及服务的端口号)进行访问,访问结果如图8所示,表示应用可以通过互联网被用户访问。

图7 应用启动成功信息

图8 浏览器成功访问页面

3 实用案例

本节简单介绍在已搭建好的MVC框架的基础上,为某商家的微信点餐小程序[14]开发一个后台Web管理系统。整个系统功能及要求如图9所示。

图9 系统结构图

开发工作分两部分同时进行,第一部分搭建用户界面,按照商家的要求完成视图规划,网页布局等工作。第二部分组织系统的业务逻辑,包括页面连接、数据模型、与用户的信息交互等工作。由于本框架已经将这两部分工作做了统一的规划和配置,因此在同时进行开发的过程中互不干扰,各自代码的设计不会影响对方代码的变化,开发效率随之提高,与传统的开发模式相比,利用本框架开发具有明显优势。开发完成了的订餐后台管理界面如图10所示。经过测试该系统运行效果满足开发要求。该案例的另一特点是与微信小程序开发结合,体现了该MVC框架的灵活性与可扩展性。

图10 后台管理界面

4 结 语

本文中基于Flask搭建的MVC框架,具有轻量灵活、耦合性低、可扩展性强等优点,为开发人员在开发Web应用时提供了清晰的逻辑思路,因此利用本框架开发效率高,管理维护方便。经过测试,通过本MVC在搭建个人商户网站、公司职员信息管理网站、学校教务管理系统等Web应用中都取得不错的效果,同时有助于初学者快速入门Web开发,具有一定的实用价值。

猜你喜欢

开发人员视图代码
Semtech发布LoRa Basics 以加速物联网应用
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《投影与视图》单元测试题
神秘的代码
一周机构净增(减)仓股前20名
一行代码玩完19亿元卫星
Django 框架中通用类视图的用法
近期连续上涨7天以上的股
后悔了?教你隐藏开发人员选项