龔新定,余艷梅,吳小強,何小海
(四川大學 電子信息學院圖像信息研究所,四川 成都610064)
基于Django的實驗室信息管理系統設計
龔新定,余艷梅,吳小強,何小海
(四川大學 電子信息學院圖像信息研究所,四川 成都610064)
設計了一種基于Django的實驗室信息管理系統。系統遵循了MVC開發模式,采用Django框架作為開發平臺。Django是基于Python語言的Web開發框架,支持多種數據庫,采用開源的輕量級數據庫SQLite。Web服務器方面,開發階段采用的是Django框架自帶的輕量級Web服務器,開發完成后,整個系統被部署到Linux平臺下的Apache服務器上。系統實現了用戶注冊和登錄、實驗室公告查看、儀器借還信息查看、留言發表及查看等功能。管理員可以通過Django自帶的后臺管理模塊對系統進行管理,用戶可以通過瀏覽器來訪問系統,無需安裝專門的客戶端。
Django框架;Apache服務器;Web站點;SQLite數據庫
傳統的高校實驗室主要依靠人工管理方式進行管理,實驗室信息更新的速度比較慢,不僅查詢、統計數據不方便,而且還浪費了大量的人力和物力。目前,大部分實驗室都搭建了局域網系統,各種計算機設備的硬件配置也在不斷地升級換代,但是因為沒有合適的實驗室管理系統,所以很多實驗室花費了大量精力和經費建成的局域網卻并沒有充分發揮其應有的作用[1]。
針對傳統的實驗室管理方式存在的不足,本文設計了一種基于Django框架的實驗室信息管理系統。Django是一個功能豐富的快速Web開發框架,結合輕量級數據庫應用SQLite,可以進行快速的Web應用開發。系統設計完成后被部署到Apache服務器上,實驗室局域網中的用戶可以通過瀏覽器/客戶端(Browser/Server,B/S)模式對服務器進行訪問,從而獲取實驗室的相關信息。
1.1Python語言和Django框架
Python是一門開源的、跨平臺的、面向對象的、解釋性的動態腳本語言[2]。Python擁有強大的標準庫和功能豐富的第三方模塊,依靠這些庫和模塊,Python能夠輕松地調用其他語言(特別是C/C++)編寫的模塊,因此也被稱為“膠水語言”[3]。
Django是用Python語言編寫的一個快速Web開發框架。Django利用對象關系映射(ObjectRelationalMapping,ORM)機制定義和操縱數據庫,使開發者可以構建出獨立于具體數據庫引擎的Web應用。Django內置了后臺管理模塊,利用它可以方便地管理Web應用。而且,Django內置了一個輕量級的WebServer,開發者無需安裝任何WebServer就可以進行各種Web應用的開發和測試。
1.2MVC模式與MTV模式
模型-視圖-控制器(Model-View-Controller,MVC)模式是目前在軟件工程領域普遍使用的一種設計模式。以MVC模式為依據設計出來的Web應用從邏輯上可以分為模型層、視圖層和控制層三個層次。分層之后,輸入處理、界面顯示和流程控制三個環節得到了有效的分離,實現了層次之間的松耦合。

圖1 MVC模式示意圖
MVC模式的示意圖如圖1所示,其中模型(Model)是對數據及其處理方法的抽象和建模,經過抽象之后的模型可以存入數據庫,并為視圖提供所需的數據;視圖(View)是用來顯示Web應用界面的,具體顯示內容由模型和控制器來決定;控制器(Controller)將模型和視圖組織在一起并進行協調,以此來提供整個應用程序的業務邏輯。
Django是一種遵循MVC模式的框架。然而,Django中采用的MVC模式與傳統意義上的MVC模式有所不同。從邏輯上看,Django整個框架分為模型(Model)、模板(Template)和視圖(View)三部分,因此Django的開發模式通常也簡稱為MTV模式[4]。Django框架的結構示意圖如圖2所示。

圖2 Django框架的MTV模式示意圖
在MTV模式中,models.py中定義的各種類代表數據模型(Model),和MVC中的模型(Model)相同;Django框架通過URLconf來實現MVC中的控制器(Controller),具體內容寫在url.py文件中。MTV模式中的模板(Template)相當于MVC模式中的視圖(View),只負責展現數據,具體內容包含在HTML文件中。MTV模式中的視圖和傳統的MVC模式中的視圖有所不同,MTV模式中的視圖決定展現哪些數據,以及如何渲染模板(Template),寫在views.py中。Django框架中的View(視圖)相當于一座橋梁,連接了Model(模型)和Template(模板)[5]。
Django框架通過URLconf實現了MVC模式中的控制器。URLconf的工作原理是根據正則表達式來匹配統一資源定位符(UniformResourceLocator,URL),如果匹配成功則會執行相應的視圖處理函數[6]。此外,在修改URL的同時并不需要修改與其對應的視圖處理函數。
本系統采用了針對嵌入式平臺應用的輕量級關系型數據庫SQLite,SQLite將整個數據庫(定義、表、索引和數據)都存儲在宿主主機上一個單一的文件中[7]。SQLite支持Windows/Linux等主流的操作系統,同時也可以與C、C++、Python等編程語言相結合進行開發。SQLite是完全開源的且占用資源少,處理速度快。在本地開發時可以使用Django框架中內置的SQLite,無需自行安裝和配置。
本系統需要用4張表來存放數據信息,分別是:用戶信息表、用戶留言表、實驗室公告表、儀器借還信息表。本系統具體的表結構如表1~表4所示。

表1 用戶信息表

表2 用戶留言表

表3 實驗室公告表

表4 儀器借還信息表
3.1 系統注冊和登錄界面
本系統的用戶主要是實驗室內部人員,用戶使用系統之前需要先進行注冊,注冊信息包括用戶名、電子郵箱、用戶密碼三部分。用戶輸入注冊信息之后,點擊注冊,注冊表單被提交到后臺服務器進行處理。系統會將用戶輸入的注冊信息與已經存在的用戶信息進行比較,如果用戶輸入的用戶名和電子郵箱在用戶信息表中不存在,點擊注冊之后,系統會跳轉到注冊成功界面,提示用戶注冊成功。用戶可以選擇登錄或者返回系統首頁;如果用戶輸入的用戶名或電子郵箱在用戶信息表中已存在,點擊注冊之后,系統會提示相關錯誤信息,并重新跳轉到注冊界面。
和注冊界面類似,用戶登錄時需要輸入用戶名和密碼,用戶點擊登錄之后,系統會將用戶輸入的登錄信息與數據庫中已經存在的用戶信息進行比對,判斷該用戶是否存在或者用戶密碼是否正確。如果用戶輸入的登錄信息正確,則進入系統主界面,否則,系統會提示此用戶不存在或用戶密碼不正確。
3.2 實驗室公告界面
進入系統主界面,點擊“510公告欄”即可瀏覽實驗室公告內容,公告內容按發表時間降序排列,即最新發表的公告排在最前面。每條公告包含四個部分,分別為標題、內容、發布人和發布時間。實驗室公告由系統管理員發布,用戶無需登錄系統也能查看實驗室公告,但是非管理員用戶既不能更改已發布的公告,也不能發布新公告。系統管理員可以使用Django自帶的后臺管理模塊對實驗室公告進行管理。
3.3 用戶留言界面
用戶登錄系統后,進入系統主界面,點擊“510留言板”即可查看具體留言內容、時間和發布人。用戶進入留言界面以后,可以點擊 “發表新留言”來添加新留言。具體流程是:點擊“發表新留言”,彈出“發表新留言”界面,輸入留言標題、內容、發布人、留言時間,點擊發表,表單會被提交到后臺進行處理,后臺數據庫會在用戶留言表中添加一個新記錄。成功發表新留言之后,系統會跳轉到留言板瀏覽界面,若未能成功發表新留言,則系統會停留在“發表新留言”界面,并提示錯誤信息給用戶。
由于本系統的用戶主要是實驗室內部人員,為了防止無關用戶故意發布無意義的留言,用戶必須在登錄系統后才能使用留言板功能。此外,留言板的管理權限歸系統管理員所有,普通的系統用戶可以查看留言的具體內容,也可以發表新留言,但是不能更改或刪除已有的留言內容。
3.4 儀器借還信息界面
由于實驗儀器和設備需要周期性地更新、升級和維護,而且相鄰實驗室之間也可能存在儀器的借進與借出,因此實驗儀器和設備的相關信息需要及時地更新和維護。本系統設計了一個儀器借還信息界面,系統將實驗室中所有的儀器和設備信息都提前錄入數據庫中,用戶登錄后可以查看所有儀器和設備的使用情況,也可以申請借用閑置的儀器和設備。用戶申請借用儀器時,必須填寫儀器編號、名稱、型號、借用人、歸還時間等信息。
3.5 后臺管理功能
Django框架提供了一個功能完善的后臺管理模塊,利用這個后臺管理模塊可以很方便地進行后臺數據管理[8]。在URLconf配置文件中添加url(r’^admin/’,admin.site.urls),添加完成后,在客戶端瀏覽器地址欄輸入URL鏈接,即可打開后臺管理模塊的登錄界面。如果想在后臺中對一個模型進行管理,比如Message,只需要在admin.py文件中添加如下兩行:
from.modelsimportMessage
admin.site.register(Message)
添加完成后,登錄http://domainname/admin即可訪問后臺管理界面,其中domainname是網站域名。用戶名和密碼是在創建管理員用戶時定義的,即運行如下命令:
$pythonmanage.pycreatsuperuser
按照提示依次輸入用戶名,電子郵箱,用戶密碼,就可以創建一個管理員用戶。登錄后可以看到一個應用列表,其中認證和授權應用是開啟auth應用之后Django自動創建的。點擊labms應用,可以看到它包括了四個模型,點擊Boards,可以進入實驗室公告的管理界面,如圖3所示。

圖3 實驗室公告管理界面
ApacheHTTPServer(簡稱Apache)是一個開源的網頁服務器。Apache安全、快速、可靠,可以在大多數計算機操作系統中運行,尤其對Linux系統的支持相當完善。Apache服務器的主要特性概括如下:
(1)支持最新的HTTP/1.1通信協議;
(2)支持通用網關接口(CGI);
(3)擁有基于文件的配置過程;
(4)支持基于IP和基于域名的虛擬主機。
服務器平臺采用的Linux發行版為Ubuntu14.04LTS,Apache服務器版本為Apache/2.4.7。在終端輸入命令:
sudoapt-getinstallapache2libapache2-mod-wsgi即可安裝Apache2和mod_wsgi。mod_wsgi是Apache用于支持Pythonwsgi協議的擴展。Python通過定義網絡服務器網關接口(PythonWebServerGatewayInterface,WSGI)來協調Web服務器與PythonWeb應用程序之間的溝通。本系統采用的wsgi版本為libapache2-mod3.4-4ubuntu2。
接下來需要創建一個自己的站點,首先修改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
通過客戶端訪問權限配置來控制能夠訪問的服務器主機和網絡,具體內容如下:
Requireallgranted
其中Requireallgranted表示允許所有訪問。
mod_wsgi有兩種工作模式:一種是嵌入模式,mod_wsgi直接在Apache進程中運行;另一種是后臺模式,mod_wsgi會借Apache的外殼,另外啟動一個或多個進程,然后通過socket和Apache進程進行通信。考慮到mod_wsgi工作在后臺模式時不會影響Apache進程,本系統中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,即可激活新建的站點。其中lab_management_system是站點配置文件的名字。站點啟動之后,需要重啟Apache服務器,在終端執行以下命令:
sudo/etc/init.d/apache2reload
sudo/etc/init.d/apache2restart
就可以重新啟動Apache服務器。服務器重新啟動之后,在客戶端瀏覽器的地址欄中輸入域名labms.com或者服務器的IP地址,即可訪問本系統的登錄界面。
本文以Django框架為基礎,結合SQLite數據庫設計
了一種實驗室信息管理系統。由于使用傳統的動態網頁語言進行Web應用開發,其效率比較低下,因此本文采用Django框架來開發Web應用,不僅能提高開發效率,降低系統開發的復雜度,而且還簡化了系統后期的更新和維護。由于系統采用了B/S模式,因此用戶不用安裝額外的客戶端軟件,從而提高了系統的易用性。
[1] 敖波.基于Web的實驗室管理系統的設計與實現[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開發指南[M]. 徐旭銘,譯.北京:機械工業出版社,2009.
[5]MOORED,WILLIAMBR.ProfessionalPythonframeworks:Web2.0programmingwithDjangoandTurbogears[M].USA:WileyPublishing,Inc., 2007.
[6] 謝國燕. 基于web技術基站維護數據管理系統的設計與實現[D]. 成都:電子科技大學, 2009.
[7] 周玥. 基于Django框架的校園預約打印網站設計與實現[D].長春:吉林大學,2013.
[8] 張臺,章杰,林培杰,等. 基于Django的快件攬收服務器的開發與應用[J]. 單片機與嵌入式系統應用,2016,16(2):51-54.
西門子收購MentorGraphics進一步拓展在工業數字化領域的領導地位
西門子近日宣布,西門子與MentorGraphics(Mentor)公司(NASDAQ:MENT)雙方已簽署并購協議,西門子將以每股37.25美元的價格現金收購Mentor,總收購價值折合 45億美元。Mentor董事會已批準這一并購協議,并確認其可行性。
通過此次并購,西門子將憑借Mentor完善的電子集成電路和系統設計、仿真及制造解決方案極大拓展其行業領先的數字化企業軟件組合。這些業務實力對于無人駕駛汽車等現代智能互聯產品至關重要。兩家公司的結合將全面集成機械、熱能、電子和嵌入式軟件工具,進一步幫助西門子客戶加快創新速度,提高生產效率和優化產品的操作性能。這將首次在跨技術領域的整個生命周期和整個企業范圍內實現質量、效率、靈活性、安全性以及速度的同步優化。
Mentor總部位于美國俄勒岡州威爾遜維爾,員工遍及全球32個國家。在截至2016年1月31日的上一財年中,營收約為12億美元,調整后的營業利潤率為20.2%。Mentor在全球共有超過14 000家客戶分布于通信、計算機、消費電子、半導體、網絡、航空航天、多媒體和交通運輸行業。Mentor在集成電路設計、測試和制造,電子系統設計和分析,以及包括汽車電子在內的新興市場等戰略行業細分領域是公認的全球領導者。
西門子預期這一并購將通過收入和利潤增長實現協同效應,在交易完成后四年內實現息稅前利潤(EBIT)超過1億歐元。Mentor將成為西門子數字化工廠集團下屬的SiemensPLMSoftware業務的一部分。如需了解更多信息,請訪問: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的實驗室信息管理系統設計[J].微型機與應用,2016,35(22):108-111.
2016-07-22)
龔新定(1991-),男,碩士研究生,主要研究方向:圖像處理與嵌入式開發。
余艷梅(1975-),通信作者,女,博士,副教授,主要研究方向:圖像處理。E-mail:yuyanmei@scu.edu.cn。
吳小強(1969-),男,高級工程師,主要研究方向:圖像處理,數據庫系統,嵌入式系統。