(中国电子科技集团公司第五十研究所)
摘 要:本文设计了一种基于Django框架的仓储管理平台软件。软件遵循MVC开发模式,利用Django、Bootstrap等技术开发该平台,整合Redis非关系型数据库处理数据,采用Postgresql数据库管理表单,并部署到Apache服务器上。该平台实现了用户管理、数据管理、出入库管理等功能。管理员可以通过Django后台管理模块对平台进行管理,用户可以通过浏览器访问平台,无需安装专门的客户端程序。
1 引言
基于中国企业精益管理的现状,为适应智能制造和管理升级的需要,我们根据企业特点,结合科研和小批次生产实际需要,设计了应用于精益仓储管理系统的仓储管理平台。该管理系统通过入库管理、储存管理、出库管理、安全管理、库存控制等功能,综合批次管理、对物料实行先入先出管理和实时库存管理等功能综合运用,有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理,最终提高企业仓库存储空间的利用率及企业物料管理的质量和效率,降低企业库存成本,提升企业市场竞争力。仓储管理平台软件作为该系统的应用程序,主要完成对系统的信息输入、数据管理等功能,并对管理过程进行实时记录,帮助管理人员利用本软件来完成对仓储系统的监督和管理。
针对系统需求,本文设计了一种基于Django框架的仓储管理平台软件。Django使用Python语言编写,基于MVC设计模式,是功能丰富的快速Web开发框架。平台部署到Apache服务器上,用户可以通过浏览器对服务器进行访问,从而获取管理系统的相关信息。
2 Django框架
2.1 基于Python语言的Web框架
图1 Web开发技术栈
Python语言是一门开源的、跨平台的、面向对象的、解释性的动态脚本语言,拥有强大的标准库和功能丰富的第三方模块。依靠这些库和模块,Python能轻松调用其他语言编写的模块,因此也被称为“胶水语言”。Python也广泛应用于Web开发中。
图1显示了基于Python的Web开发技术栈。其中,Django是Python最著名的Web框架。它利用对象关系映射(Object Relational Mapping, ORM)机制定义和操纵数据库,使开发者可以构建出独立于具体数据库引擎的Web应用。同时内置了后台管理模块,可以方便地管理Web应用。
在设计本平台软件时,我们选择以下技术进行开发:
前端框架:采用Bootstrap框架。该框架可以实现样式丰富、风格清晰的界面效果。
Web服务器:Apache服务器。Apache是Apache HTTP Server的简称,是一个优秀的网页服务器。
缓存配置:Redis非关系型数据库,它是使用C编写的基于内存的NoSQL数据库,是目前最流行的键值对存储数据库。
数据库:Postgresql数据库。它通过关系型的方式将数据元素组织到一起。这种相互关联的结构,使得数据访问效率较高,同时还具有很强的灵活性。
2.2 MTV设计模式
Django基于MVC设计模式,即Model(模型)+View(视图)+Controller(控制器)设计模式,但对其进行了修改,形成了MTV设计模式,把视图分成View和Template两部分,将动态的逻辑处理与静态的页面展现分离开。Model采用ORM技术,将关系型数据库表抽象成面向对象的Python类,将表操作转换成类操作,避免了复杂的SQL语句编写。
模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法。
模板(Template):将数据与HTML语言结合起来的引擎。
视图(View):负责实际的业务逻辑实现。
Django的MTV模型组织可参考图2所示:
图2 Django的MTV模型组织
2.3 Django框架的核心组件
基于MTV设计模式,Django包含了如下核心组件:
(1)对象关系映射ORM:将关系型数据库中的数据映射为程序中的对象。
(2)自动化的后台管理界面:这是Django自带的后台管理界面,它可以灵活的管理网站数据。
(3)表单处理:这是Django的特性,可以从数据模型直接生成表单,同时自带对表单的有效性检验。
(4)模版系统:Django模版系统含有很多内置的tags和filters,可以直接使用。
(5)URLconf:相当于MVC中的Controller,根据正则表达式来匹配相应的URL,再调用相应的处理函数。所以,我们可以根据自己的爱好设计URL,当URL改变时,不必修改对应的视图处理函数。
2.4 Django框架的工作机理
Django框架在运行时,分为如下几个步骤:
(1)用manage.py runserver命令行语句开启Django服务器时就载入了在同一目录下的settings.py。该文件包含了项目中的配置信息,如前面讲的
URLConf等。
(2)一旦开始访问URL,Django会根据ROOT_URLCONF的配置情况来装载URLConL。
(3)而后按顺序逐一与URLConf里的URLpatterns配对,如果找到则会执行对应的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。
(4)最终由该view函数返回一个用来作为响应的HttpResponse对象。
以上步骤通常按照先后顺序依次执行,但遇到异常发生,也可能从中间某个步骤开始向下执行。
3 系统设计与实现
3.1 系统功能
仓储管理平台软件主要完成对仓储管理系统的信息输入、数据管理、用户管理等功能,并对管理过程进行实时记录。主要功能包括:
(1)用户管理:对不同权限的用户进行管理,包括管理员和普通用户两种权限。普通用户可实时查询日志,管理员还具备参数设置等权限;
(2)入库管理:对输入的工艺文件进行处理,采集工作令号、单板级名称、元器件明细等数据,生成入库信息;
(3)出库管理:根据工艺卡中的工序,进行批次领取库存;
(4)库存控制:按照不同类型进行库存分类管理,包括结构件、电信件等;
(5)日志功能:对系统输入和输出信息等进行存储,形成日志信息,便于用户查询历史数据。
针对这些功能需求,分别对Django的数据模型(Model)、模板(Template)和视图(View)进行设计。
3.2数据模型设计
本软件采用关系型数据库Postgresql来管理系统数据信息。设计数据库时,需要在应用环境中,运用合理的方法设计并抽象出最佳的数据模型,建立数据库,并以此为基础搭建上层的应用系统,创建出的数据库要能有效存取数据,满足用户的特定要求。
对本系统而言,最基本的需求是将用户信息、输入信息、库存信息等保存在数据库中,方便随时存取,并对前端调用提供支持,需要用4张表来存放相关数据,分别是:用户信息表、工序信息表、入库信息表、出库信息表。
表1 用户信息表
字段名称 | 列名 | 数据类型 | 其他 |
用户编号 | userid | integer | 主键 |
用户名 | username | varchar | 无 |
用户密码 | password | varchar | 无 |
用户类型 | usertype | varchar | 无 |
表2 工序信息表
字段名称 | 列名 | 数据类型 | 其他 |
工艺文件编号 | cardid | integer | 主键 |
工艺文件名称 | cardname | integer | 无 |
输入用户编号 | userid | integer | 无 |
步骤信息 | stepinfo | varchar | 无 |
工作令号 | ordername | varchar | 无 |
表3 入库信息表
字段名称 | 列名 | 数据类型 | 其他 |
物料编号 | materialid | varchar | 主键 |
物料类型 | materialtype | varchar | 无 |
物料名称 | materialname | varchar | 无 |
物料数量 | materialnum | integer | 无 |
物料信息 | materialinfo | varchar | 无 |
入库时间 | inputtime | varchar | 无 |
处理人 | processuser | varchar | 无 |
表4 出库信息表
字段名称 | 列名 | 数据类型 | 其他 |
物料编号 | materialid | varchar | 主键 |
物料类型 | materialtype | varchar | 无 |
物料名称 | materialname | varchar | 无 |
物料数量 | materialnum | integer | 无 |
工作令号 | ordername | varchar | 无 |
出库时间 | outputtime | varchar | 无 |
处理人 | processuser | varchar | 无 |
3.3模板及前端设计
Django模板是含有Django标签的HTML文件。模板能够继承,基类模板可以派生出一系列子模板。在Django工程的每一个应用里面,新建一个名为templates的文件夹,该文件夹是存放HTML模板的默认位置。如果要添加新的存放模板的路径,则需要对settings.py配置文件进行修改。在该配置文件下有一个名为TEMPLATE DIRS的元组,如果需要新建存放模板文件的路径,那么就将新路径添加到元组里面。
本系统中总共有5个模版,分别用于登录页面、管理主页面、日志页面、入库页面和出库页面。设计模板时,考虑到页面的美化效果,我们将系统所有的表单在HTML页面中重写,采用Bootstrap前端框架,呈现给用户较好的页面视觉效果,基于Html5结合CSS样式设计对五个页面进行合理的划分,使每个页面的布局清晰合理,采用JavaScript及JQuery定时器功能实时接收传入后端数据库中的报警信息,并呈现在页面表格中。
3.4视图设计
视图的功能是通过视图函数来执行的。在Django工程中,views.py文件里面保存的是该应用的视图函数,用户每发送一次请求,就会有一个对应的视图函数对请求进行处理,处理的结果一般是返回一个HTML模板给用户,该HTML模版里面包含用户浏览网页所要获取的信息。也就是通过这样的方式,实现了前端(客户端)与后端(服务器)的分离。视图函数以request对象为参数,request对象是从网页端提交的请求,视图函数处理请求之后,返回
HttpResponse对象。下面按照网站功能分别介绍几个主要的视图模块及页面效果。
(1)登录模块:用户浏览网页时,首先打开网站首页。该页面用于不同权限的用户进行登录,有管理员及普通用户两种权限。它包含输入验证,登录成功后跳转监控界面,如图3所示。
图3 用户登录示意图
(2)管理员模块:管理员使用Django框架自带的管理模块进行后台数据管理,如图4所示。
(3)日志模块:提供信息筛选、查询、导出、列表展示等功能。如图5所示。
(4)入库管理模块:包含添加、导入、当前物料信息的编辑、删除操作及分页功能。如图6所示。
(5)出库管理模块:包含添加、导入、当前物料信息的编辑、删除操作及分页功能。如图7所示。
图4 站点管理示意图
图5 日志示意图
图6 入库管理示意图
图7 出库管理示意图
4 结语
本文以Django框架为基础,设计了一种仓储管理平台软件。实际使用结果表明,该平台能够完成信息浏览、用户注册、登录、页面实时刷新、日志查询和结果统计等功能,较好地完成了预期目标。采用Django框架来开发Web应用,不仅能提高开发效率,降低平台开发的复杂度,还简化了平台后期的更新和维护。由于采用了B/S模式,用户不用安装额外的客户端软件,从而提高了系统的易用性。
1