龔新定,余艷梅,吳小強,何小海
(四川大學 電子信息學院圖像信息研究所,四川 成都610064)
基于Django的實驗室信息管理系統(tǒng)設計
龔新定,余艷梅,吳小強,何小海
(四川大學 電子信息學院圖像信息研究所,四川 成都610064)
設計了一種基于Django的實驗室信息管理系統(tǒng)。系統(tǒng)遵循了MVC開發(fā)模式,采用Django框架作為開發(fā)平臺。Django是基于Python語言的Web開發(fā)框架,支持多種數(shù)據(jù)庫,采用開源的輕量級數(shù)據(jù)庫SQLite。Web服務器方面,開發(fā)階段采用的是Django框架自帶的輕量級Web服務器,開發(fā)完成后,整個系統(tǒng)被部署到Linux平臺下的Apache服務器上。系統(tǒng)實現(xiàn)了用戶注冊和登錄、實驗室公告查看、儀器借還信息查看、留言發(fā)表及查看等功能。管理員可以通過Django自帶的后臺管理模塊對系統(tǒng)進行管理,用戶可以通過瀏覽器來訪問系統(tǒng),無需安裝專門的客戶端。
Django框架;Apache服務器;Web站點;SQLite數(shù)據(jù)庫
傳統(tǒng)的高校實驗室主要依靠人工管理方式進行管理,實驗室信息更新的速度比較慢,不僅查詢、統(tǒng)計數(shù)據(jù)不方便,而且還浪費了大量的人力和物力。目前,大部分實驗室都搭建了局域網(wǎng)系統(tǒng),各種計算機設備的硬件配置也在不斷地升級換代,但是因為沒有合適的實驗室管理系統(tǒng),所以很多實驗室花費了大量精力和經(jīng)費建成的局域網(wǎng)卻并沒有充分發(fā)揮其應有的作用[1]。
針對傳統(tǒng)的實驗室管理方式存在的不足,本文設計了一種基于Django框架的實驗室信息管理系統(tǒng)。Django是一個功能豐富的快速Web開發(fā)框架,結合輕量級數(shù)據(jù)庫應用SQLite,可以進行快速的Web應用開發(fā)。系統(tǒng)設計完成后被部署到Apache服務器上,實驗室局域網(wǎng)中的用戶可以通過瀏覽器/客戶端(Browser/Server,B/S)模式對服務器進行訪問,從而獲取實驗室的相關信息。
1.1Python語言和Django框架
Python是一門開源的、跨平臺的、面向?qū)ο蟮摹⒔忉屝缘膭討B(tài)腳本語言[2]。Python擁有強大的標準庫和功能豐富的第三方模塊,依靠這些庫和模塊,Python能夠輕松地調(diào)用其他語言(特別是C/C++)編寫的模塊,因此也被稱為“膠水語言”[3]。
Django是用Python語言編寫的一個快速Web開發(fā)框架。Django利用對象關系映射(ObjectRelationalMapping,ORM)機制定義和操縱數(shù)據(jù)庫,使開發(fā)者可以構建出獨立于具體數(shù)據(jù)庫引擎的Web應用。Django內(nèi)置了后臺管理模塊,利用它可以方便地管理Web應用。而且,Django內(nèi)置了一個輕量級的WebServer,開發(fā)者無需安裝任何WebServer就可以進行各種Web應用的開發(fā)和測試。
1.2MVC模式與MTV模式
模型-視圖-控制器(Model-View-Controller,MVC)模式是目前在軟件工程領域普遍使用的一種設計模式。以MVC模式為依據(jù)設計出來的Web應用從邏輯上可以分為模型層、視圖層和控制層三個層次。分層之后,輸入處理、界面顯示和流程控制三個環(huán)節(jié)得到了有效的分離,實現(xiàn)了層次之間的松耦合。
圖1 MVC模式示意圖
MVC模式的示意圖如圖1所示,其中模型(Model)是對數(shù)據(jù)及其處理方法的抽象和建模,經(jīng)過抽象之后的模型可以存入數(shù)據(jù)庫,并為視圖提供所需的數(shù)據(jù);視圖(View)是用來顯示W(wǎng)eb應用界面的,具體顯示內(nèi)容由模型和控制器來決定;控制器(Controller)將模型和視圖組織在一起并進行協(xié)調(diào),以此來提供整個應用程序的業(yè)務邏輯。
Django是一種遵循MVC模式的框架。然而,Django中采用的MVC模式與傳統(tǒng)意義上的MVC模式有所不同。從邏輯上看,Django整個框架分為模型(Model)、模板(Template)和視圖(View)三部分,因此Django的開發(fā)模式通常也簡稱為MTV模式[4]。Django框架的結構示意圖如圖2所示。
圖2 Django框架的MTV模式示意圖
在MTV模式中,models.py中定義的各種類代表數(shù)據(jù)模型(Model),和MVC中的模型(Model)相同;Django框架通過URLconf來實現(xiàn)MVC中的控制器(Controller),具體內(nèi)容寫在url.py文件中。MTV模式中的模板(Template)相當于MVC模式中的視圖(View),只負責展現(xiàn)數(shù)據(jù),具體內(nèi)容包含在HTML文件中。MTV模式中的視圖和傳統(tǒng)的MVC模式中的視圖有所不同,MTV模式中的視圖決定展現(xiàn)哪些數(shù)據(jù),以及如何渲染模板(Template),寫在views.py中。Django框架中的View(視圖)相當于一座橋梁,連接了Model(模型)和Template(模板)[5]。
Django框架通過URLconf實現(xiàn)了MVC模式中的控制器。URLconf的工作原理是根據(jù)正則表達式來匹配統(tǒng)一資源定位符(UniformResourceLocator,URL),如果匹配成功則會執(zhí)行相應的視圖處理函數(shù)[6]。此外,在修改URL的同時并不需要修改與其對應的視圖處理函數(shù)。
本系統(tǒng)采用了針對嵌入式平臺應用的輕量級關系型數(shù)據(jù)庫SQLite,SQLite將整個數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù))都存儲在宿主主機上一個單一的文件中[7]。SQLite支持Windows/Linux等主流的操作系統(tǒng),同時也可以與C、C++、Python等編程語言相結合進行開發(fā)。SQLite是完全開源的且占用資源少,處理速度快。在本地開發(fā)時可以使用Django框架中內(nèi)置的SQLite,無需自行安裝和配置。
本系統(tǒng)需要用4張表來存放數(shù)據(jù)信息,分別是:用戶信息表、用戶留言表、實驗室公告表、儀器借還信息表。本系統(tǒng)具體的表結構如表1~表4所示。
表1 用戶信息表
表2 用戶留言表
表3 實驗室公告表
表4 儀器借還信息表
3.1 系統(tǒng)注冊和登錄界面
本系統(tǒng)的用戶主要是實驗室內(nèi)部人員,用戶使用系統(tǒng)之前需要先進行注冊,注冊信息包括用戶名、電子郵箱、用戶密碼三部分。用戶輸入注冊信息之后,點擊注冊,注冊表單被提交到后臺服務器進行處理。系統(tǒng)會將用戶輸入的注冊信息與已經(jīng)存在的用戶信息進行比較,如果用戶輸入的用戶名和電子郵箱在用戶信息表中不存在,點擊注冊之后,系統(tǒng)會跳轉到注冊成功界面,提示用戶注冊成功。用戶可以選擇登錄或者返回系統(tǒng)首頁;如果用戶輸入的用戶名或電子郵箱在用戶信息表中已存在,點擊注冊之后,系統(tǒng)會提示相關錯誤信息,并重新跳轉到注冊界面。
和注冊界面類似,用戶登錄時需要輸入用戶名和密碼,用戶點擊登錄之后,系統(tǒng)會將用戶輸入的登錄信息與數(shù)據(jù)庫中已經(jīng)存在的用戶信息進行比對,判斷該用戶是否存在或者用戶密碼是否正確。如果用戶輸入的登錄信息正確,則進入系統(tǒng)主界面,否則,系統(tǒng)會提示此用戶不存在或用戶密碼不正確。
3.2 實驗室公告界面
進入系統(tǒng)主界面,點擊“510公告欄”即可瀏覽實驗室公告內(nèi)容,公告內(nèi)容按發(fā)表時間降序排列,即最新發(fā)表的公告排在最前面。每條公告包含四個部分,分別為標題、內(nèi)容、發(fā)布人和發(fā)布時間。實驗室公告由系統(tǒng)管理員發(fā)布,用戶無需登錄系統(tǒng)也能查看實驗室公告,但是非管理員用戶既不能更改已發(fā)布的公告,也不能發(fā)布新公告。系統(tǒng)管理員可以使用Django自帶的后臺管理模塊對實驗室公告進行管理。
3.3 用戶留言界面
用戶登錄系統(tǒng)后,進入系統(tǒng)主界面,點擊“510留言板”即可查看具體留言內(nèi)容、時間和發(fā)布人。用戶進入留言界面以后,可以點擊 “發(fā)表新留言”來添加新留言。具體流程是:點擊“發(fā)表新留言”,彈出“發(fā)表新留言”界面,輸入留言標題、內(nèi)容、發(fā)布人、留言時間,點擊發(fā)表,表單會被提交到后臺進行處理,后臺數(shù)據(jù)庫會在用戶留言表中添加一個新記錄。成功發(fā)表新留言之后,系統(tǒng)會跳轉到留言板瀏覽界面,若未能成功發(fā)表新留言,則系統(tǒng)會停留在“發(fā)表新留言”界面,并提示錯誤信息給用戶。
由于本系統(tǒng)的用戶主要是實驗室內(nèi)部人員,為了防止無關用戶故意發(fā)布無意義的留言,用戶必須在登錄系統(tǒng)后才能使用留言板功能。此外,留言板的管理權限歸系統(tǒng)管理員所有,普通的系統(tǒng)用戶可以查看留言的具體內(nèi)容,也可以發(fā)表新留言,但是不能更改或刪除已有的留言內(nèi)容。
3.4 儀器借還信息界面
由于實驗儀器和設備需要周期性地更新、升級和維護,而且相鄰實驗室之間也可能存在儀器的借進與借出,因此實驗儀器和設備的相關信息需要及時地更新和維護。本系統(tǒng)設計了一個儀器借還信息界面,系統(tǒng)將實驗室中所有的儀器和設備信息都提前錄入數(shù)據(jù)庫中,用戶登錄后可以查看所有儀器和設備的使用情況,也可以申請借用閑置的儀器和設備。用戶申請借用儀器時,必須填寫儀器編號、名稱、型號、借用人、歸還時間等信息。
3.5 后臺管理功能
Django框架提供了一個功能完善的后臺管理模塊,利用這個后臺管理模塊可以很方便地進行后臺數(shù)據(jù)管理[8]。在URLconf配置文件中添加url(r’^admin/’,admin.site.urls),添加完成后,在客戶端瀏覽器地址欄輸入URL鏈接,即可打開后臺管理模塊的登錄界面。如果想在后臺中對一個模型進行管理,比如Message,只需要在admin.py文件中添加如下兩行:
from.modelsimportMessage
admin.site.register(Message)
添加完成后,登錄http://domainname/admin即可訪問后臺管理界面,其中domainname是網(wǎng)站域名。用戶名和密碼是在創(chuàng)建管理員用戶時定義的,即運行如下命令:
$pythonmanage.pycreatsuperuser
按照提示依次輸入用戶名,電子郵箱,用戶密碼,就可以創(chuàng)建一個管理員用戶。登錄后可以看到一個應用列表,其中認證和授權應用是開啟auth應用之后Django自動創(chuàng)建的。點擊labms應用,可以看到它包括了四個模型,點擊Boards,可以進入實驗室公告的管理界面,如圖3所示。
圖3 實驗室公告管理界面
ApacheHTTPServer(簡稱Apache)是一個開源的網(wǎng)頁服務器。Apache安全、快速、可靠,可以在大多數(shù)計算機操作系統(tǒng)中運行,尤其對Linux系統(tǒng)的支持相當完善。Apache服務器的主要特性概括如下:
(1)支持最新的HTTP/1.1通信協(xié)議;
(2)支持通用網(wǎng)關接口(CGI);
(3)擁有基于文件的配置過程;
(4)支持基于IP和基于域名的虛擬主機。
服務器平臺采用的Linux發(fā)行版為Ubuntu14.04LTS,Apache服務器版本為Apache/2.4.7。在終端輸入命令:
sudoapt-getinstallapache2libapache2-mod-wsgi即可安裝Apache2和mod_wsgi。mod_wsgi是Apache用于支持Pythonwsgi協(xié)議的擴展。Python通過定義網(wǎng)絡服務器網(wǎng)關接口(PythonWebServerGatewayInterface,WSGI)來協(xié)調(diào)Web服務器與PythonWeb應用程序之間的溝通。本系統(tǒng)采用的wsgi版本為libapache2-mod3.4-4ubuntu2。
接下來需要創(chuàng)建一個自己的站點,首先修改hosts文件,設置服務器的IP地址及其對應的域名,在hosts文件中添加:172.28.175.7labms.com。打開/etc/apache2/sites-available目錄,新建一個站點配置文件lab_management_system.conf。配置信息主要包括域名配置、根目錄配置、客戶端訪問權限配置和mod_wsgi工作模式配置。域名配置和根目錄配置如下:
ServerNamelabms.com
DocumentRoot
/home/reus/workspace/lab_management_system
通過客戶端訪問權限配置來控制能夠訪問的服務器主機和網(wǎng)絡,具體內(nèi)容如下:
Requireallgranted
其中Requireallgranted表示允許所有訪問。
mod_wsgi有兩種工作模式:一種是嵌入模式,mod_wsgi直接在Apache進程中運行;另一種是后臺模式,mod_wsgi會借Apache的外殼,另外啟動一個或多個進程,然后通過socket和Apache進程進行通信。考慮到mod_wsgi工作在后臺模式時不會影響Apache進程,本系統(tǒng)中mod_wsgi采用的是后臺工作模式,具體配置如下:
WSGIDaemonProcesslabms.comprocesses=1threads=15display-name=%{GROUP}
python-path=/home/reus/workspace/lab_management_system:/usr/local/lib/python3.4/dist-packages
WSGIProcessGrouplabms.com
WSGIScriptAlias/ /home/reus/workspace/lab_management_system/lab_management_system/wsgi.py
站點配置完成后在終端輸入命令sudoa2ensitelab_management_system,即可激活新建的站點。其中l(wèi)ab_management_system是站點配置文件的名字。站點啟動之后,需要重啟Apache服務器,在終端執(zhí)行以下命令:
sudo/etc/init.d/apache2reload
sudo/etc/init.d/apache2restart
就可以重新啟動Apache服務器。服務器重新啟動之后,在客戶端瀏覽器的地址欄中輸入域名labms.com或者服務器的IP地址,即可訪問本系統(tǒng)的登錄界面。
本文以Django框架為基礎,結合SQLite數(shù)據(jù)庫設計
了一種實驗室信息管理系統(tǒng)。由于使用傳統(tǒng)的動態(tài)網(wǎng)頁語言進行Web應用開發(fā),其效率比較低下,因此本文采用Django框架來開發(fā)Web應用,不僅能提高開發(fā)效率,降低系統(tǒng)開發(fā)的復雜度,而且還簡化了系統(tǒng)后期的更新和維護。由于系統(tǒng)采用了B/S模式,因此用戶不用安裝額外的客戶端軟件,從而提高了系統(tǒng)的易用性。
[1] 敖波.基于Web的實驗室管理系統(tǒng)的設計與實現(xiàn)[D].成都:電子科技大學,2009.
[2]CHUNWJ.CorePythonprogramming[M].USA:PrenticeHall, 2007.
[3]MARTELLIA,RAVENSCROFTA,ASCHERD.Pythoncookbook[M].CA:O’ReillyMedia.Inc, 2009.
[4]FORCIERJ,BISSEXP,CHUNW.DjangoWeb開發(fā)指南[M]. 徐旭銘,譯.北京:機械工業(yè)出版社,2009.
[5]MOORED,WILLIAMBR.ProfessionalPythonframeworks:Web2.0programmingwithDjangoandTurbogears[M].USA:WileyPublishing,Inc., 2007.
[6] 謝國燕. 基于web技術基站維護數(shù)據(jù)管理系統(tǒng)的設計與實現(xiàn)[D]. 成都:電子科技大學, 2009.
[7] 周玥. 基于Django框架的校園預約打印網(wǎng)站設計與實現(xiàn)[D].長春:吉林大學,2013.
[8] 張臺,章杰,林培杰,等. 基于Django的快件攬收服務器的開發(fā)與應用[J]. 單片機與嵌入式系統(tǒng)應用,2016,16(2):51-54.
西門子收購MentorGraphics進一步拓展在工業(yè)數(shù)字化領域的領導地位
西門子近日宣布,西門子與MentorGraphics(Mentor)公司(NASDAQ:MENT)雙方已簽署并購協(xié)議,西門子將以每股37.25美元的價格現(xiàn)金收購Mentor,總收購價值折合 45億美元。Mentor董事會已批準這一并購協(xié)議,并確認其可行性。
通過此次并購,西門子將憑借Mentor完善的電子集成電路和系統(tǒng)設計、仿真及制造解決方案極大拓展其行業(yè)領先的數(shù)字化企業(yè)軟件組合。這些業(yè)務實力對于無人駕駛汽車等現(xiàn)代智能互聯(lián)產(chǎn)品至關重要。兩家公司的結合將全面集成機械、熱能、電子和嵌入式軟件工具,進一步幫助西門子客戶加快創(chuàng)新速度,提高生產(chǎn)效率和優(yōu)化產(chǎn)品的操作性能。這將首次在跨技術領域的整個生命周期和整個企業(yè)范圍內(nèi)實現(xiàn)質(zhì)量、效率、靈活性、安全性以及速度的同步優(yōu)化。
Mentor總部位于美國俄勒岡州威爾遜維爾,員工遍及全球32個國家。在截至2016年1月31日的上一財年中,營收約為12億美元,調(diào)整后的營業(yè)利潤率為20.2%。Mentor在全球共有超過14 000家客戶分布于通信、計算機、消費電子、半導體、網(wǎng)絡、航空航天、多媒體和交通運輸行業(yè)。Mentor在集成電路設計、測試和制造,電子系統(tǒng)設計和分析,以及包括汽車電子在內(nèi)的新興市場等戰(zhàn)略行業(yè)細分領域是公認的全球領導者。
西門子預期這一并購將通過收入和利潤增長實現(xiàn)協(xié)同效應,在交易完成后四年內(nèi)實現(xiàn)息稅前利潤(EBIT)超過1億歐元。Mentor將成為西門子數(shù)字化工廠集團下屬的SiemensPLMSoftware業(yè)務的一部分。如需了解更多信息,請訪問:www.siemens.com.cn,或關注西門子中國官方微博http://weibo.com/siemens。
西門子(中國)有限公司 供稿
Design of autonomous four-rotor tracking aircraft based on the STM32 and OV2640
GongXinding,YuYanmei,WuXiaoqiang,HeXiaohai
(InstituteofImageInformation,CollegeofElectronicsandInformationEngineering,SichuanUniversity,Chengdu610064,China)
ThispaperpresentsaDjango-basedlaboratoryinformationmanagementsystem.ThesystemdevelopmentfollowstheModel-View-Controller(MVC)pattern,usingtheDjangoframeworkasadevelopmentplatform.DjangoisaWebdevelopmentframeworkbasedonPythonlanguage.Itsupportsmultipledatabases,usingalightweightopen-sourcedatabaseSQLiteinthispaper.ForWebserver,alightweightWebserverthatcomeswiththeDjangoframeworkisusedinthedevelopmentstage.Afterthedevelopmentiscompleted,thesystemisdeployedtotheApacheserveronLinuxplatform.Thesystemrealizestheuserregistrationandlogin,Labannouncementview,instrumentcirculationinformationview,amessagetoexpressandview,andotherfunctions.AdministratorscanmanagethesystemthroughtheDjangoownbackgroundmanagementmodule,anduserscanaccessthesystemthroughabrowser,withouthavingtoinstallspecializedclient.
Djangoframework;Apacheserver;Website;SQLitedatabase
TP
ADOI: 10.19358/j.issn.1674- 7720.2016.22.029
龔新定,余艷梅,吳小強,等. 基于Django的實驗室信息管理系統(tǒng)設計[J].微型機與應用,2016,35(22):108-111.
2016-07-22)
龔新定(1991-),男,碩士研究生,主要研究方向:圖像處理與嵌入式開發(fā)。
余艷梅(1975-),通信作者,女,博士,副教授,主要研究方向:圖像處理。E-mail:yuyanmei@scu.edu.cn。
吳小強(1969-),男,高級工程師,主要研究方向:圖像處理,數(shù)據(jù)庫系統(tǒng),嵌入式系統(tǒng)。