基于Django框架的仓储管理平台设计

/ 3

基于Django框架的仓储管理平台设计

李琴 毛建勇

(中国电子科技集团公司第五十研究所)

摘  要:本文设计了一种基于Django框架的仓储管理平台软件软件遵循MVC开发模式,利用DjangoBootstrap等技术开发该平台,整合Redis非关系型数据库处理数据,采用Postgresql数据库管理表单,并部署到Apache服务器上平台实现了用户管理、数据管理、出入库管理等功能。管理员可以通过Django后台管理模块对平台进行管理,用户可以通过浏览器访问平台,无需安装专门的客户端程序。

1 引言

基于中国企业精益管理的现状,为适应智能制造和管理升级的需要,我们根据企业特点,结合科研和小批次生产实际需要,设计了应用于精益仓储管理系统的仓储管理平台。该管理系统通过入库管理、储存管理、出库管理、安全管理、库存控制等功能,综合批次管理、对物料实行先入先出管理和实时库存管理等功能综合运用,有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理,最终提高企业仓库存储空间的利用率及企业物料管理的质量和效率,降低企业库存成本,提升企业市场竞争力。仓储管理平台软件作为该系统的应用程序,主要完成对系统的信息输入、数据管理等功能,并对管理过程进行实时记录,帮助管理人员利用本软件来完成对仓储系统的监督和管理。

针对系统需求,本文设计了一种基于Django框架的仓储管理平台软件。Django使用Python语言编写,基于MVC设计模式,是功能丰富的快速Web开发框架。平台部署到Apache服务器上,用户可以通过浏览器对服务器进行访问,从而获取管理系统的相关信息。

2 Django框架

2.1 基于Python语言的Web框架

图1 Web开发技术栈

Python语言是一门开源的、跨平台的、面向对象的、解释性的动态脚本语言,拥有强大的标准库和功能丰富的第三方模块。依靠这些库和模块,Python能轻松调用其他语言编写的模块,因此也被称为“胶水语言”。Python也广泛应用于Web开发中。

1显示了基于PythonWeb开发技术栈。其中,DjangoPython最著名的Web框架。它利用对象关系映射(Object Relational MappingORM)机制定义和操纵数据库,使开发者可以构建出独立于具体数据库引擎的Web应用。同时内置了后台管理模块,可以方便地管理Web应用。

在设计本平台软件时,我们选择以下技术进行开发:

前端框架:采用Bootstrap框架。该框架可以实现样式丰富、风格清晰的界面效果。

Web服务器:Apache服务器。ApacheApache HTTP Server的简称,是一个优秀的网页服务器。

缓存配置:Redis非关系型数据库,它是使用C编写的基于内存的NoSQL数据库,是目前最流行的键值对存储数据库。

数据库:Postgresql数据库。它通过关系型的方式将数据元素组织到一起。这种相互关联的结构,使得数据访问效率较高,同时还具有很强的灵活性。

2.2 MTV设计模式

Django基于MVC设计模式,即Model(模型)+View(视图)+Controller(控制器)设计模式,但对其进行了修改,形成了MTV设计模式,把视图分成ViewTemplate两部分,将动态的逻辑处理与静态的页面展现分离开。Model采用ORM技术,将关系型数据库表抽象成面向对象的Python类,将表操作转换成类操作,避免了复杂的SQL语句编写。

模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法。

模板(Template):将数据与HTML语言结合起来的引擎。

视图(View):负责实际的业务逻辑实现。

DjangoMTV模型组织可参考图2所示:

图2 Django的MTV模型组织

2.3 Django框架的核心组件

基于MTV设计模式,Django包含了如下核心组件:

1)对象关系映射ORM:将关系型数据库中的数据映射为程序中的对象。

2)自动化的后台管理界面:这是Django自带的后台管理界面,它可以灵活的管理网站数据。

3)表单处理:这是Django的特性,可以从数据模型直接生成表单,同时自带对表单的有效性检验。

4)模版系统:Django模版系统含有很多内置的tagsfilters,可以直接使用。

5URLconf:相当于MVC中的Controller,根据正则表达式来匹配相应的URL,再调用相应的处理函数。所以,我们可以根据自己的爱好设计URL,当URL改变时,不必修改对应的视图处理函数。

2.4 Django框架的工作机理

Django框架在运行时,分为如下几个步骤:

1)用manage.py runserver命令行语句开启Django服务器时就载入了在同一目录下的settings.py。该文件包含了项目中的配置信息,如前面讲的

URLConf等。

2)一旦开始访问URLDjango会根据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样式设计对个页面进行合理的划分,使每个页面的布局清晰合理,采用JavaScriptJQuery定时器功能实时接收传入后端数据库中的报警信息,并呈现在页面表格中。

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