Cases of Application 基于Django的实验室信息管理系统设计 龚新定,余艳梅,吴小强,何小海 (四川大学电子信息学院图像信息研究所,四川成都610064) 摘要:设计了一种基于Django的实验室信息管理系统。系统遵循了MVC开发模式,采用Django框架作为开发平台。Django 是基于Python语言的Web开发框架,支持多种数据库,采用开源的轻量级数据库SQLite。Web服务器方面,开发阶段采用的是 Django框架自带的轻量级Web服务器,开发完成后,整个系统被部署到Linux平台下的Apache服务器上。系统实现了用户注 册和登录、实验室公告查看、仪器借还信息查看、留言发表及查看等功能。管理员可以通过Django自带的后台管理模块对系统 进行管理,用户可以通过浏览器来访问系统,无需安装专门的客户端。 关键词:Django框架;Apache服务器;Web站点;SQLite数据库 中图分类号:TP303 文献标识码:A DOI:10.19358/j.issn.1674.7720.2016.22.029 引用格式:龚新定,余艳梅,吴小强,等.基于Django的实验室信息管理系统设计[J].微型机与应用,2016,35(22):108.111. Design of laboratory information management system based on Django Gong Xinding,Yu Yanmei,Wu Xiaoqiang,He Xiaohai (Institute of Image Information,College of Electronics and Information Engineering,Sichuan University,Chengdu 610064,China) Abstract:This paper presents a Django—based laboratory information management system.The system development follows the Model—View- Controller(MVC)pattern,using the Django framework as a development platform.Django is a Web development framework based on Python language.It supports multiple databases,using a lightweight open・source database SQLite in this paper.For Web server,a lightweight Web server that comes with the Django ̄amework is used in the development stage.After the development i_一scompleted,the system is deployed to the Apache server on Linux platform.The system realizes the user registration and login,Lab announcement view,instrument circulation infor— mation view,a message to express and view,and other functions.Administrators can manage the system through the Django own background management module,and users can access the system through a browser,without having to install specialized client. Key words:Django framework;Apache server;Web site;SQLite database 0 引言 传统的高校实验室主要依靠人工管理方式进行管 理,实验室信息更新的速度比较慢,不仅查询、统计数 据不方便,而且还浪费了大量的人力和物力。目前,大 部分实验室都搭建了局域网系统,各种计算机设备的 1 Django框架 1.1 Python语言和Django框架 Python是一门开源的、跨平台的、面向对象的、解释性 的动态脚本语言 。Python拥有强大的标准库和功能丰 富的第三方模块,依靠这些库和模块,Python能够轻松地 硬件配置也在不断地升级换代,但是因为没有合适的 实验室管理系统,所以很多实验室花费了大量精力和 经费建成的局域网却并没有充分发挥其应有的作 用 。 调用其他语言(特别是C/C++)编写的模块,因此也被称 为“胶水语言” 。 Django是用Python语言编写的一个快速Web开发框 架。Django利用对象关系映射(Object Relational Mapping, 针对传统的实验室管理方式存在的不足,本文设 计了一种基于Django框架的实验室信息管理系统。 Django是一个功能丰富的快速Web开发框架,结合轻 量级数据库应用SQLite,可以进行快速的Web应用开 发。系统设计完成后被部署到Apache服务器上,实验 室局域网中的用户可以通过浏览器/客户端(Browser/ ORM)机制定义和操纵数据库,使开发者可以构建出 于具体数据库引擎的Web应用。Django内置了后台管理 模块,利用它可以方便地管理Web应用。而且,Django内 置了一个轻量级的Web Server,开发者无需安装任何Web Server就可以进行各种Web应用的开发和测试。 1.2 MVC模式与MTV模式 Server,B/S)模式对服务器进行访问,从而获取实验室 的相关信息。 108 模型一视图一控制器(Model—View-Controller,MVC)模式 是目前在软件工程领域普遍使用的一种设计模式。以 《微型机与应用)2016年第35卷第22期 Cases of Application MVC模式为依据设计出来的Web应用从逻辑上可以分为 模型层、视图层和控制层三个层次。分层之后,输入处理、 界面显示和流程控制三个环节得到了有效的分离,实现了 层次之间的松耦合。 MVC模式的示意图 如图1所示,其中模型 (Mode1)是对数据及其 处理方法的抽象和建 模,经过抽象之后的模 型可以存人数据库,并 图1 MVC模式示意图 为视图提供所需的数据;视图(View)是用来显示Web应 用界面的,具体显示内容由模型和控制器来决定;控制器 (Controller)将模型和视图组织在一起并进行协调,以此来 提供整个应用程序的业务逻辑。 Django是一种遵循MVC模式的框架。然而,Django 中采用的MVC模式与传统意义上的MVC模式有所不同。 从逻辑上看,Django整个框架分为模型(Mode1)、模板 (Template)和视图(View)三部分,因此Django的开发模式 通常也简称为MTV模式 。Django框架的结构示意图如 图2所示。 在MTV模式中, models.PY中定义的各种 类代表数据模型(Mod- e1),和MVC中的模型 (Mode1)相同;Django框 架通过URLconf来实现 MVC中的控制器(Con. troller),具体内容写在 ur1.PY文件中。MTV模 式中的模板(Template) 相当于MVC模式中的视 图2 Django框架的MTV模式示意图 图(View),只负责展现数据,具体内容包含在HTML文件 中。MTV模式中的视图和传统的MVC模式中的视图有 所不同,MTV模式中的视图决定展现哪些数据,以及如何 渲染模板(Template),写在views.PY中。Django框架中的 View(视图)相当于一座桥梁,连接了Model(模型)和 Template(模板) 。 Django框架通过URLconf实现了MVC模式中的控制 器。URLconf的工作原理是根据正则表达式来匹配统一 资源定位符(Uniform Resource Locator,URL),如果匹配成 功则会执行相应的视图处理函数。。 。此外,在修改URL 的同时并不需要修改与其对应的视图处理函数。 2数据模型设计 本系统采用了针对嵌入式平台应用的轻量级关系型 数据库SQLite,SQLite将整个数据库(定义、表、索引和数 据)都存储在宿主主机上一个单一的文件中” 。SQLite支 《微型机与应用)2016年第35卷第22期 持Windows/Linux等主流的操作系统,同时也可以与C、 c++、Python等编程语言相结合进行开发。SQLite是完全 开源的且占用资源少,处理速度快。在本地开发时可以使 用Django框架中内置的SQLite,无需自行安装和配置。 本系统需要用4张表来存放数据信息,分别是:用户 信息表、用户留言表、实验室公告表、仪器借还信息表。本 系统具体的表结构如表1一表4所示。 表1 用户信息表 3系统功能设计 3.1 系统注册和登录界面 本系统的用户主要是实验室内部人员,用户使用系统 之前需要先进行注册,注册信息包括用户名、电子邮箱、用 户密码三部分。用户输入注册信息之后,点击注册,注册 表单被提交到后台服务器进行处理。系统会将用户输入 的注册信息与已经存在的用户信息进行比较,如果用户输 入的用户名和电子邮箱在用户信息表中不存在,点击注册 之后,系统会跳转到注册成功界面,提示用户注册成功。 用户可以选择登录或者返回系统首页;如果用户输入的用 欢迎网上投稿WWW.pcachina.com 109 应用察例 Cases of Application 户名或电子邮箱在用户信息表中已存在,点击注册之后, 接,即可打开后台管理模块的登录界面。如果想在后台中 对一个模型进行管理,比如Message,只需要在admin.PY 文件中添加如下两行: from.models import M essage 系统会提示相关错误信息,并重新跳转到注册界面 和注册界面类似,用户登录时需要输入用户名和密 码,用户点击登录之后,系统会将用户输入的登录信息与 数据库中已经存在的用户信息进行比对,判断该用户是否 存在或者用户密码是否正确。如果用户输入的登录信息 正确,则进入系统主界面,否则,系统会提示此用户不存在 或用户密码不正确。 3.2实验室公告界面 admin.site.register(Message) 添加完成后,登录http://domainname/admin即可访 问后台管理界面,其中domainname是网站域名。用户名 和密码是在创建管理员用户时定义的,即运行如下命令: ¥python manage.PY ereatsuperuser 进入系统主界面,点击“510公告栏”即可浏览实验室 公告内容,公告内容按发表时间降序排列,即最新发表的 公告排在最前面。每条公告包含四个部分,分别为标题、 内容、发布人和发布时间。实验室公告由系统管理员发 布,f}】户无需卺录系统也能查看实验室公告,但是非管理 按照提示依次输入用户名,电子邮箱,用户密码,就可 以创建一个管理员用户。登录后可以看到一个应用列表, 其中认证和授权应用是开启auth应用之后Django自动创 建的。点击labms应用,可以看到它包括了四个模型.点 击Boards,可以进入实验室公告的管理界面,如图3所示。 ● :.一I ☆●●●● 员用户既不能更改已发布的公告,也不能发布新公告。系 统管理员可以使用Django自带的后台管理模块对实验室 公告进行管理。 3.3用户留言界面 ●- ■墨———一 用户登录系统后,进入系统主界面,点击“510留言 板”即可查看具体留言内容、时间和发布人。用户进入留 言界面以后,可以点击“发表新留言”来添加新留言。具 图3 实验室公告管理界面 体流程是:点击“发表新留言”,弹出“发表新留言”界面, 输入留言标题、内容、发布人、留言时间,点击发表,表单会 被提交到后台进行处理,后台数据库会在用户留言表中添 加一个新记录。成功发表新留言之后,系统会跳转到留言 4系统的部署 Apache HTTP Server(简称Apache)是一个开源的网页 服务器。Apache安全、快速、可靠,可以在大多数计算机 操作系统中运行,尤其对Linux系统的支持相当完善。A. pache服务器的主要特性概括如下: 板浏览界面,若未能成功发表新留言,则系统会停留在 “发表新留言”界面,并提示错误信息给用户。 由于本系统的用户主要是实验室内部人员,为了防止 无关用户故意发布无意义的留言,用户必须在登录系统后 才能使用留言板功能。此外,留言板的管理权限归系统管 理员所有,普通的系统用户可以查看留言的具体内容,也 可以发表新留言,但是不能更改或删除已有的留言内容。 3.4 仪器借还信息界面 (I)支持最新的HTTP/1.1通信协议; (2)支持通用网关接口(CGI); (3)拥有基于文件的配置过程; (4)支持基于IP和基于域名的虚拟主机。 服务器平台采用的Linux发行版为Ubuntu 14.04 LTS, Apache服务器版本为Apache/2.4.7。在终端输入命令: sudo apt・-get install apache2 libapache2・mod・-wsgi 由于实验仪器和设备需要周期性地更新、升级和维 护,而且相邻实验室之间也可能存在仪器的借进与借出, 因此实验仪器和设备的相关信息需要及时地更新和维护。 本系统设计了一个仪器借还信息界面,系统将实验室中所 有的仪器和设备信息都提前录入数据库中,用户登录后可 即可安装Apache2和mod—wsgi。mod—wsgi是Apache用于 支持Python wsgi协议的扩展。Python通过定义网络服务器 网关接口(Python Web Server Gateway Interface,WSGI)来协 调Web服务器与Python Web应用程序之间的沟通。本系 统采用的wsgi版本为libapache2一mod 3.4—4ubuntu2。 接下来需要创建一个自己的站点,首先修改hosts文 件,设置服务器的IP地址及其对应的域名,在hosts文件 中添加:172.28.175.7 labms.coln。打开/etc/apache2/sites 以查看所有仪器和设备的使用情况,也可以申请借用闲置 的仪器和设备。用户申请借用仪器时,必须填写仪器编 号、名称、型号、借用人、归还时间等信息。 3.5后台管理功能 Django框架提供了一个功能完善的后台管理模块,利 用这个后台管理模块可以很方便地进行后台数据管理 。 在URLconf配置文件中添加url(r“admin/’,admin.site. available目录,新建一个站点配置文件lab—management— system.conf。配置信息主要包括域名配置、根目录配置、 客户端访问权限配置和rood—wsgi工作模式配置。域名配 置和根目录配置如下: ServerName labms.COrn urls),添加完成后,在客户端浏览器地址栏输入URL链 l1 0 《微型机与应用))2016年第35卷第22期 Cases of Application DocumentRoot 了一种实验室信息管理系统。由于使用传统的动态网页 —/h0me/reus/workspace/labmanagement—system 语言进行Web应用开发,其效率比较低下,因此本文采用 Django框架来开发Web应用,不仅能提高开发效率,降低 系统开发的复杂度,而且还简化了系统后期的更新和维 护。由于系统采用了B/S模式,因此用户不用安装额外 的客户端软件,从而提高了系统的易用性。 参考文献 [1]敖波.基于Web的实验室管理系统的设计与实现[D].成 都:电子科技大学,2009. [2]CHUN W J.Core Python programming[M].USA:Prentice Hal1.2007. 通过客户端访问权限配置来控制能够访问的服务器 主机和网络,具体内容如下: <Directory/home/reus/work pace/labmanagement—system > Require all granted </Directory> 其中Require all granted表示允许所有访问。 oodr—wsgi有两种工作模式:一种是嵌入模式,mod—WS— gi直接在Apache进程中运行;另一种是后台模式,mod— wsgi会借Apache的外壳,另外启动一个或多个进程,然后 通过socket和Apache进程进行通信。考虑到mod—wsgi工 [3]MARTELLI A,RAVENSCROFT A,ASCHER D.Python cook- book[M].CA:O’Reilly Media.Inc,2009. [4]FORCIER J,BISSEX P,CHUN W.Django Web开发指 南[M].徐旭铭,译.北京:机械工业出版社,2009. 作在后台模式时不会影响Apache进程,本系统中mod—WS— gi采用的是后台工作模式,具体配置如下: WSGIDaemonProcess labms.corn processes=1 threads=15 display—name=%{GROUP} python—path=/home/reus/workspace/labmanagement—sys— —[5]MOORE D,WILLIAM B R.Professional Python frameworks: Web 2.0 programming with Django and Turbogears[M].USA: Wiley Publishing,Inc.,2007. tern:/usr/local/lib/python3.4/dist—packages WSGIPr0cessG rI1up labms.con [6]谢国燕.基于web技术基站维护数据管理系统的设计与实 WSGIScriptAlias//h0me/reus/workspace/labsystem/labmanagement——system/wsgi.PY ——management— 现[D].成都:电子科技大学,2009. [7]周明.基于Django框架的校园预约打印网站设计与实 现[D].长春:吉林大学,2013. 站点配置完成后在终端输入命令sudo a2ensite lab— management—system,即可激活新建的站点。其中lab—man— [8]张台,章杰,林培杰,等.基于Django的快件揽收服务器的 开发与应用[J].单片机与嵌入式系统应用,2016,16(2): 51.54. (收稿日期:2016-07-22) agement—system是站点配置文件的名字。站点启动之后, 需要重启Apache服务器,在终端执行以下命令: sudo/etc/init.d/apache2 reload sudo/etc/init.d/apache2 restart 作者简介: 就可以重新启动Apache服务器。服务器重新启动之后, 在客户端浏览器的地址栏中输入域名labms.con或者服 务器的IP地址,即可访问本系统的登录界面。 龚新定(1991一),男,硕士研究生,主要研究方向:图像处理 与嵌入式开发。 余艳梅(1975一),通信作者,女,博士,副教授,主要研究方 向:图像处理。E—mail:yuyanmei@SCU.edu.cn。 5 结论 本文以Django框架为基础,结合SQLite数据库设计 吴小强(1969一),男,高级工程师,主要研究方向:图像处 理,数据库系统,嵌入式系统。 《微型机与应用)}2016年第35卷第22期 欢迎网上投稿WWW・pcachina・c。m ¨