版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄TOC\o"1-3"\h\u前言 6第一章 緒論 71.1 論文研究背景 71.2 論文的內(nèi)容和意義 81.3 本文的組織結(jié)構(gòu) 9第二章 技術(shù)綜述 92.1 面向?qū)ο蟮姆治龊驮O(shè)計 92.2 Python語言 102.3Django框架 122.4MySQL 132.5本章小結(jié) 14第三章 需求分析 153.1 運維故障管理系統(tǒng)功能需求分析 153.1.1背景 153.1.2需求 153.2系統(tǒng)非功能性需求分析 193.3 系統(tǒng)可行性 203.3.1技術(shù)可行性分析 203.3.2經(jīng)濟(jì)成本可行性分析 203.3.3開發(fā)環(huán)境可行性分析 213.3本章小結(jié) 21第四章 系統(tǒng)設(shè)計 214.1總體架構(gòu)程序設(shè)計 214.1.1系統(tǒng)技術(shù)框架 214.1.2系統(tǒng)總體設(shè)計 224.2數(shù)據(jù)庫設(shè)計 234.2.1用戶管理模塊相關(guān)表 234.2.2故障管理模塊相關(guān)表 244.2.3其他 254.3界面設(shè)計 254.4本章小結(jié) 26第五章 系統(tǒng)實現(xiàn) 275.1 系統(tǒng)主要頁面及代碼實現(xiàn) 275.1.1登錄界面 275.1.2系統(tǒng)首頁 285.1.3用戶管理界面 295.1.4故障管理界面 305.1.5統(tǒng)計版界面 345.2本章小結(jié) 35第六章 總結(jié)與展望 366.1本文總結(jié) 366.2后期展望 36參考文獻(xiàn) 37致謝 38摘要隨著時代的高速發(fā)展,全面信息化時代逐漸來臨,國內(nèi)企業(yè)信息化越來越深入,這是一個很好的局面,隨之而來也產(chǎn)生了很多問題,IT運維部門的負(fù)擔(dān)越來月嚴(yán)重,IT設(shè)備和軟件的運行維護(hù)工作都是他們負(fù)責(zé),在新形式下,這份工作變得越來越復(fù)雜,技術(shù)難度也提高了不少檔次,所以成為一個優(yōu)秀的運維人員并不是一個輕松的活,要求嚴(yán)格已經(jīng)到了一個新高度。首先,無法否認(rèn)的是IT設(shè)備與軟件越來越大程度地參與到實際的生產(chǎn)過程中并且承擔(dān)的角色也越來越重要。當(dāng)生產(chǎn)過程中這些設(shè)備與軟件發(fā)生故障時,將對企業(yè)造成不可避免的巨大影響,那么如何快速的捕獲故障信息并且定位故障原因,對于運維人員來說,是能極大提高解決故障效率的因素,從而降低企業(yè)損失,很多企業(yè)更愿意投資部署一套運維管理系統(tǒng)來提高運維效率,本課題就是基于Django框架所設(shè)計的運維故障管理方案。通過在企業(yè)實際生產(chǎn)環(huán)境上的運維需求調(diào)研,運維故障管理系統(tǒng)需要實現(xiàn)一些基本功能,諸如:故障管理,故障統(tǒng)計,用戶管理以及郵箱管理。
本系統(tǒng)開發(fā)過程,經(jīng)過學(xué)習(xí),以軟件工程項目開發(fā)過程標(biāo)準(zhǔn)為參考,遵循開發(fā)步驟。參考面向?qū)ο蟮姆椒ㄔO(shè)計數(shù)據(jù)庫,系統(tǒng)的設(shè)計與實現(xiàn)運用了Python語言中的Django網(wǎng)頁應(yīng)用開發(fā)框架并采用B/S網(wǎng)絡(luò)應(yīng)用結(jié)構(gòu),數(shù)據(jù)庫使用開源數(shù)據(jù)庫MySQL。關(guān)鍵詞:Django;Python;B/S;MySQLAbstractWiththedeepeningofbusinessinformationindomesticenterprises,theoperationandmaintenanceofITequipmentandsoftwareresponsiblefortheIToperationandmaintenancedepartmentisbecomingmoreandmorecomplex,andthetechnicaldifficultyisbecominghigherandhigher.ITdevicesandsoftwarearebecomingmoreandmoreinvolvedintheactualproductionprocess,andtherolestheyassumearebecomingmoreandmoreimportant.Whentheequipmentandsoftwaremalfunctionintheprocessofproduction,itwillhaveanunavoidableimpactontheenterprise.Thenhowtoquicklycapturethefaultinformationandlocatethecauseofthefailureisafactorthatcangreatlyimprovetheefficiencyofthefailurefortheoperationandmaintenancepersonnel,thusreducingthelossoftheenterprise.Manyenterpriseswilldeployasetofoperationandmaintenancemanagementsystemtoimproveoperationandmaintenanceefficiency.ThisprojectisbasedontheDjangoframeworkdesignedforoperationandmaintenanceoffaultmanagementplan.Theoperationandmaintenancesystemneedssomebasicfunctions,suchasfaultmanagement,faultstatistics,usermanagementandmailboxmanagement,throughtheinvestigationofoperationandmaintenancerequirementsintheactualproductionenvironmentoftheenterprise.Thedevelopmentprocessofthissystemshouldfollowthedevelopmentprocessofsoftwareengineeringproject,designdatabasewithobject-orientedanalysisanddesignmethod.ThedesignandRealizationofthesystemusetheDjangowebapplicationdevelopmentframeworkinPythonlanguageanduseB/Snetworkapplicationstructure,andthedatabaseusestheopensourcesoftwareMySQL.Keywords:Django;Python;B/S;MySQL前言運維是企業(yè)內(nèi)比較常態(tài)的事務(wù),也許并沒有主功能系統(tǒng)使用那么頻繁,但是其頻率也是比較高的。信息化時代下,IT運維更顯重,當(dāng)IT運維故障發(fā)生時,如何有效地通知到運維人員,并詳細(xì)描述故障發(fā)生時的現(xiàn)象,可以很好地幫助運維人員排查故障原因并實施解決方案。在運維故障處理思路中,基本的方法是:首先,確定故障現(xiàn)象并初判問題影響,故障現(xiàn)象直接決定了故障應(yīng)急解決方案的制定。其次,應(yīng)急恢復(fù),故障發(fā)生后,并且故障無法立刻解決,那么系統(tǒng)是否能保證可用就全靠應(yīng)急方案的合理了,然后快速定位問題,最后解決故障。解決故障之后,能夠完善監(jiān)控對未來運維中可能出現(xiàn)的故障起著非常關(guān)鍵的作用。運維故障管理系統(tǒng)是為滿足故障解決思路中的基本方法的基礎(chǔ)需求所設(shè)計的方案。系統(tǒng)設(shè)計了一些基本模塊,這些模塊將作為實現(xiàn)運維故障管理的功能,包括故障管理,故障統(tǒng)計,以及故障反饋等功能,在理想情況下,系統(tǒng)算是完成了運維故障管理的基本任務(wù)。本文主要介紹系統(tǒng)功能的設(shè)計與實現(xiàn),以及數(shù)據(jù)庫的搭建,闡述了需求分析,系統(tǒng)設(shè)計與系統(tǒng)實現(xiàn)的全過程。本系統(tǒng)采用B/S結(jié)構(gòu)(Browser/Server結(jié)構(gòu)),采用Pycharm作為開發(fā)工具,Mysql作為后臺數(shù)據(jù)庫,通過該系統(tǒng)能夠提高運維人員在日常運維中的效率,從而進(jìn)一步保障企業(yè)的正常運作,對于企業(yè)本身而言,在生產(chǎn)環(huán)境中運用該系統(tǒng)是極具意義價值的。該系統(tǒng)的定位并非企業(yè)生產(chǎn)環(huán)境中的主功能系統(tǒng),而是作為輔助工具,幫助企業(yè)提高運作效率。緒論在本章中會介紹系統(tǒng)開發(fā)研究背景,簡單地說明了本文所做的主要工作和以及在企業(yè)日常運維中系統(tǒng)所起到的意義,最后介紹了一下本文的組織目錄,以供參考。1.1 論文研究背景運維故障是日常運維中比較高頻發(fā)生的且具有損害影響的事件,涉及故障解決,通常都會有常見方法,這些方法都是常識性的認(rèn)知,并沒有特殊的優(yōu)良效果,在故障發(fā)生時,當(dāng)然應(yīng)該以解決故障為首要目標(biāo),至于采取何種手段,作為決策人員并不關(guān)心,當(dāng)故障解決之后,情況并沒有那么的緊急,這才考慮方法優(yōu)化的問題。故障解決的常見方法,我們將假設(shè)一條工作流來進(jìn)行說明,按步驟分解,工作流的第一步,確定故障現(xiàn)象,初判問題影響,這將是處理問題的基礎(chǔ),運維人員如果無法得知故障現(xiàn)象,解決故障從何談起,只有知曉了故障現(xiàn)象才能制定一些應(yīng)急方針,來降低損失,一個熟悉整套系統(tǒng)功能運作的運維人員必然能從故障現(xiàn)象中判斷出故障影響。第二步,故障發(fā)生后,也許有些故障可以立即恢復(fù),但仍然有一些故障并不能立刻解決,這與運維人員的能力無關(guān),那這種故障也不能一直掛著處于未修復(fù)狀態(tài),不然會一直影響著線上生產(chǎn)。這是就需要應(yīng)急恢復(fù),保證系統(tǒng)是否可用,這絕對關(guān)乎運維人員的能力問題,或者說是運維團(tuán)隊,應(yīng)急恢復(fù)的有效性是檢驗系統(tǒng)可用的關(guān)鍵指標(biāo)。應(yīng)急方案根據(jù)第一步的現(xiàn)象來制定,需要額外注意的是,在故障應(yīng)急恢復(fù)之前,如果條件允許,應(yīng)當(dāng)盡可能保存當(dāng)前場景。第三,快速定位故障原因,可以通過幾個邏輯:是否為偶發(fā)、是否可重現(xiàn),是否進(jìn)行過變更,是否可縮小范圍,是否有足夠的日志等等。故障現(xiàn)象是否可以重現(xiàn),對于快速解決問題很重要,如果故障為、偶發(fā)性,對運維人員是一件十分頭疼的事,不僅時時刻刻擔(dān)心著故障是否會再次發(fā)生影響系統(tǒng)運行,還要糾結(jié)于故障定位,因為偶發(fā)的故障系統(tǒng)排查難度相當(dāng)之大。大確定故障現(xiàn)象之后,如果有相應(yīng)變更,應(yīng)該從變更操作的角度去分析問題,進(jìn)而快速定位故障。故障作為一種不確定因素,隨時可能發(fā)生在各個環(huán)節(jié),所以排查故障時應(yīng)該避免全面性的排查,因為這時極其耗時的一件事,且收效低微,對于企業(yè)來說這種成本顯然不值得投資。故障發(fā)生不僅在不同的環(huán)節(jié),其影響也可能是不同部門,對于主要負(fù)責(zé)方,盡早縮小范圍后應(yīng)該積極向關(guān)聯(lián)方發(fā)出請求,配合定位,而關(guān)聯(lián)方則需要配合工作。這樣團(tuán)隊之間步調(diào)一致才有助于故障的解決。所以,按照以上闡述的解決故障基本思路,可以大概演示出一條故障解決的工作流,首先,在故障現(xiàn)場的人員需要匯報故障發(fā)生,且描述故障現(xiàn)象,條件允許盡可能保護(hù)現(xiàn)場,備注進(jìn)行了哪些變更操作,有無日志,可以對故障影響做一個初步判斷。在故障剛剛發(fā)生時,故障狀態(tài)描述應(yīng)該用新建狀態(tài)來標(biāo)記,標(biāo)記顏色為醒目的紅色,以提醒所有看到這條故障信息時,知曉當(dāng)前系統(tǒng)存在何種為題。其次,故障匯報需要分派運維相關(guān)負(fù)責(zé)人,及時通知該負(fù)責(zé)人,這可以理解為一種相關(guān)責(zé)任制。然后,相關(guān)負(fù)責(zé)人接到通知,開始更根據(jù)現(xiàn)象,備注或者日志去分析定位問題,并確認(rèn)故障影響范圍,正在維修的故障,故障的狀態(tài)然而然應(yīng)該變?yōu)檫M(jìn)行中。最后故障修復(fù)后,運維人員需要提供一個反饋給故障匯報人,修復(fù)的故障狀態(tài)因為為已經(jīng)解決,根據(jù)該工作流,系統(tǒng)需求的雛形已基本形成。系統(tǒng)功能實現(xiàn)這條工作流,能極大提供故障解決效率,保障企業(yè)的正常運作。1.2 論文的內(nèi)容和意義論文的主要內(nèi)容為:(1)運維管理系統(tǒng)的需求分析,根據(jù)故障解決基本思路,系統(tǒng)需求雛形已基本成型,額外需求需要進(jìn)一步完善,以提高系統(tǒng)可用性。(2)運維管理系統(tǒng)的功能設(shè)計與實現(xiàn),所采用的開發(fā)語言,技術(shù)框架,以及實現(xiàn)系統(tǒng)功能的過程(3)數(shù)據(jù)庫中表的設(shè)計,綜合考慮數(shù)據(jù)存儲的方便快捷以及數(shù)據(jù)的必要性,在數(shù)據(jù)庫設(shè)計了一些必要的表以支持需求所設(shè)計的功能。運維管理系統(tǒng)存在的意義已經(jīng)闡述多次,其旨在提供給故障發(fā)生當(dāng)事人一個報告的渠道和運維人員捕獲故障的渠道以提高信息的交換效率。而本論文將會對所提出解決方案做出詳細(xì)分析。并結(jié)合真實的企業(yè)生產(chǎn)環(huán)境做出有效嘗試,以驗證運維管理系統(tǒng)在真實的生產(chǎn)環(huán)境中的可用性。運維管理系統(tǒng)將成為運維人員完成故障管理的便捷工具,能極大提高運維人員的工作效率,從而降低故障發(fā)生時企業(yè)的損失,因為故障解決拖的時間越久,損失就越大,能盡快修復(fù)故障時企業(yè)追求的目標(biāo)之一,因此,本課題具有非常重要而且積極的實際意義。1.3 本文的組織結(jié)構(gòu)本系統(tǒng)是基于Django的Web應(yīng)用框架開發(fā),主要目標(biāo)是完成運維故障管理。其中包含故障匯報,故障統(tǒng)計,故障反饋,用戶管理,郵箱管理等功能,以加快故障信息交流速度,提高運維人員工作效率,降低企業(yè)損失。全文共分六章,各章的內(nèi)容安排如下:第一章:緒論,本章主要介紹課題項目背景,開發(fā)目標(biāo)和意義。第二章:技術(shù)綜述,對本系統(tǒng)開發(fā)所采用的開發(fā)工具、開發(fā)環(huán)境和所運用的技術(shù)做了簡單的介紹。第三章:需求分析,主要是對故障管理的需求的進(jìn)行充分詳細(xì)的分析。第四章:系統(tǒng)設(shè)計,主要是介紹運維故障管理系統(tǒng)的功能設(shè)計和實現(xiàn)故障管理頁面用戶交互界面的過程、數(shù)據(jù)庫表和邏輯。第五章:系統(tǒng)實現(xiàn),主要介紹了系統(tǒng)的主要頁面和系統(tǒng)的部分代碼,以及框架的配置。第六章:總結(jié)與展望,對課題進(jìn)行總結(jié),并對以后的改進(jìn)進(jìn)行展望。技術(shù)綜述本章詳細(xì)闡述了面向?qū)ο蟮姆治龊驮O(shè)計,并對web應(yīng)用框架,Python語言,Django框架以及數(shù)據(jù)庫技術(shù)進(jìn)行了詳細(xì)介紹。2.1 面向?qū)ο蟮姆治龊驮O(shè)計面向?qū)ο蟮姆治龊驮O(shè)計是市場上所流行的比較樸實的方法,之所以說它樸實,是因為其在實際應(yīng)用中的功效實實在在,效果顯著。在指定問題范圍內(nèi),有很多實體和對象,這并不難理解,通俗點講,就是在闡述問題是,涉及到的名詞,就是所說的行為對象,那如何將這些對象和實體映射到現(xiàn)實世界,那么就需要采用所介紹方法。它能幫助人們理解他們要做的東西該以什么樣的方式去實現(xiàn)。在現(xiàn)代軟件企業(yè)中,由于整體節(jié)奏越來越快,出現(xiàn)了許多系統(tǒng)分析法,而面向?qū)ο笤谶@些方法中脫穎而出,經(jīng)過時代的考驗和刷選,最終保留了下來,軟件開發(fā)團(tuán)隊越來越愿意采用這種面向?qū)ο蟮姆椒?。無論從開發(fā)成本還是從開發(fā)效率的角度,面向?qū)ο蟮姆椒ǘ几臃蠒r代潮流趨勢,而且可以帶來不錯的優(yōu)勢。既然是面向?qū)ο蟮模敲丛O(shè)計理念是否可以貼近現(xiàn)實世界至關(guān)重要,越接近于現(xiàn)實,越能保留對象的現(xiàn)實特性,即應(yīng)該以最自然的方式展示實體,正是順應(yīng)這種要求,面向?qū)ο蟮姆椒ň彤a(chǎn)生了,面向?qū)ο蠹夹g(shù)的優(yōu)勢就在于它可以建立一種問題模型,這個問題模型并非無中生有,而是在現(xiàn)實世界中能找到相對應(yīng)的問題域,而且在模型中將其現(xiàn)實問題域中原有的結(jié)構(gòu),關(guān)系和行為模式保存下來[1]。在過去的軟件系統(tǒng)中,需求的變動非常少,所以傳統(tǒng)的系統(tǒng)分析都在此基礎(chǔ)上進(jìn)行,在需求不變的情況下,傳統(tǒng)的系統(tǒng)分析的優(yōu)越性突出在其對企業(yè)資源的配置上,它能最優(yōu)配置。在過去,傳統(tǒng)的系統(tǒng)分析也許十分適宜當(dāng)時的軟件開發(fā)。但是現(xiàn)代社會瞬息萬變,企業(yè)如果仍然采取這種固有不變的系統(tǒng)分析方法,其在競爭中的劣勢會立刻暴露出來,并帶來一定的損失。在軟件行業(yè)中,期望需求在軟件實現(xiàn)過程保持一致絕無可能,企業(yè)的需求是變化的、極其不穩(wěn)定的,現(xiàn)代軟件信息系統(tǒng)的不穩(wěn)定性主要就是源自于其非常不穩(wěn)定的需求。在最近的幾年,面向?qū)ο蟮母拍铋_始流入中國的,雖然這個概念進(jìn)入國內(nèi)有些時日,但現(xiàn)狀是這種思想仍然沒有得到真正意義上普及。從極其簡易的層次上來說,面向?qū)ο缶褪敲嫦蚴澜?,世界上的任何事物都可以歸類為對象,所以面向?qū)ο蟮乃枷胧欠浅W匀坏南敕?,這符合我們的思維習(xí)慣的?,F(xiàn)代編程語言,很多都采用面向?qū)ο蟮姆椒?,其中包含目前比較主流的語言C++、Java以及C#,導(dǎo)致這種現(xiàn)象的原因可以理解為適者生存,正式由于企業(yè)需要面向?qū)ο?,所以適合這種方法的語言就保留了下來。在實現(xiàn)軟件開發(fā)過程中,開發(fā)人員必須認(rèn)清一個現(xiàn)實,那就是需求永遠(yuǎn)無法形成穩(wěn)定,而面向?qū)ο箝_發(fā)方法從一種隔離角度,將企業(yè)的對象從企業(yè)需求中抽離出來,這樣至少保證了變化的需求不會去影響穩(wěn)定的對象,然后構(gòu)建系統(tǒng)時,通過編排穩(wěn)定對象來組織需求。通過這種方式所獲得的系統(tǒng)將比傳統(tǒng)系統(tǒng)穩(wěn)定很多,即使企業(yè)需求發(fā)生一變再變,系統(tǒng)就不需要一次次的推倒重新來過,只需要將穩(wěn)定的企業(yè)對象重新組織即可,不得不提的就是,這種方式顯然降低了需求變更的風(fēng)險[2]。2.2 Python語言Python在目前主流編程語言中占有重要一席,并且它的使用率非常高,在2017年的專業(yè)報告中,Python已經(jīng)穩(wěn)居各大排行榜之首。其影響力不言而喻。提及Python,就不得不提它那非常豐富而且強(qiáng)大的庫。它常常被開發(fā)人員稱為膠水語言,能夠獲此美稱,并非言過其實,比如其他語言制作的各種模塊(尤其是C/C++),開發(fā)人員會發(fā)現(xiàn),使用Python來搭建這些模塊的橋梁絕大多數(shù)情況都比使用本語言去聯(lián)結(jié)更加輕松。舉一個實際的運用場景例子就,針對有特殊要求的模塊,自行去選擇其他更合適的語言改寫,舉例如3D游戲中的圖形渲染模塊,我們都知道這部分對性能要求非常高,因為這部分制作是否優(yōu)秀關(guān)系到它在市場上的核心競爭力,這時就可以使用C/C++重寫,只要封裝為Python可以調(diào)用的擴(kuò)展類庫就可以了[3]。Python是完全面向?qū)ο蟮恼Z言,這種說法并不過分,因為在Python中,一切都是對象,而能夠支持繼承、派生、重載、多繼承這些已經(jīng)不算作優(yōu)勢了,在現(xiàn)代軟件編程中,這應(yīng)該是基本要求,所以即使在眾多優(yōu)秀編程語言中,Python源代碼的復(fù)用性的是非常突出的[4]。Python的優(yōu)點眾多,它是由簡單主義催生出的編程語言,毫不夸張的地說,流暢的Python程序甚至就如同用英語說話一般表達(dá)程序功能,所以開發(fā)人員要可以集中更多精力放在自己需要解決的問題上。由于Python的說明文檔非常容易理解,所以對于剛剛?cè)腴T的新手來說并非是一件非常困難的事情。Python的運行速度非???,這就要歸功于用C編寫出的底層,這一點還有一個好處就是Python不需要去理會那些底層上的細(xì)枝末節(jié)。Python是以開源形式在市場上流通的,如今Python早已經(jīng)被聰明的開發(fā)者們移植在許多平臺上,[5]。Python的解釋性非常優(yōu)秀,只需要安裝過Python解釋器,Python解釋器在其中起著至關(guān)重要的作用,在Python源代碼與計算機(jī)識別的機(jī)器語言之間,存在一種字節(jié)碼中間形式,而解釋器的功能就是將源碼先換成中間形式再翻譯成機(jī)器語言,這就使得運用Python變的更加簡單,這也增加了Python程序的可移植性。在Python程序編程中,如果遇到這種情況:開發(fā)人員希望一些關(guān)鍵代碼運行的更快,Python提供了解決方案,Python允許部分代碼用C/C++去寫,或者另外一種情況:有一些核心技術(shù)使用到的關(guān)鍵的算法,開發(fā)人員不希望這些算法對外公開,因為這涉及到知識產(chǎn)權(quán),依然適用。Python秉持著“功效齊備”的理念,它的標(biāo)準(zhǔn)庫很龐大,可以輔助開發(fā)者處理各種繁瑣的工作[6]。Python有一個看上去不近人情的非常強(qiáng)硬的要求,那就是為大家所知的強(qiáng)制縮進(jìn),這沒什么不好,正因為這種強(qiáng)制性,才使得程序看上去美觀而且具備良好可讀性,對于開發(fā)人員來說這是賞心悅目的。2.3Django框架Django是一個Python擴(kuò)展出來的Web應(yīng)用框架,其開源性質(zhì)沿襲了Python語言,框架是參考MVC架構(gòu)創(chuàng)造出來,雖然參考的是MVC,但它并不純粹的MVC模式,而另辟了一種屬于自己的模式,那就是MTV,即模型M,模板T和視圖V[7]。Django的歷史可以追溯到上個世紀(jì),源自于一個在線新聞?wù)军c,在隨后,也就是2005年,才釋放到市場上流通,在最近幾年,Django發(fā)布的版本也越來越多,發(fā)展越來越迅速[8],Django的架構(gòu)總覽如下圖:圖2.1Django架構(gòu)圖Django視圖并不會去處理用戶輸入了哪些內(nèi)容,而僅僅決定將哪些用戶展現(xiàn)給用戶[9],而Django模板就決定了要如何展現(xiàn)Django視圖指定的數(shù)據(jù)[10]??梢岳斫鉃殡m然是基于MVC構(gòu)造的出的Django,但是Django稍微對視圖部分進(jìn)一步分解,經(jīng)分解處理后,原來MVC中的的視圖分出視圖和模板兩個分支,,分別掌管“展現(xiàn)哪些數(shù)據(jù)”和“如何展現(xiàn)數(shù)據(jù)”[11],如果需求發(fā)生變化,那就更換Django模板,完全不考慮內(nèi)置的模板的限制。Django運用其框架中的URLconf去實現(xiàn)控制器,URLconf機(jī)制原理也很簡單,最開始由正則表達(dá)式來進(jìn)行URL配對操作,然后再調(diào)用Python函數(shù),URLconf對于URL的規(guī)則是沒有任何限制的[12]。Django各個模塊的交互關(guān)系如下,Django程序的流程圖:圖2.2Django程序流程圖2.4MySQLMySQL是一個關(guān)系型數(shù)據(jù)庫,追尋歷史源頭,它最先由瑞典MySQLAB公司開發(fā)出來,也許是公司被收購了,現(xiàn)在它作為Oracle的產(chǎn)品在市場上流通。MySQL是最流行的關(guān)系型數(shù)據(jù)庫之一,在WEB應(yīng)用方面,如果你去咨詢有經(jīng)驗的web開發(fā)人員,絕大多數(shù)行業(yè)的前輩都會推薦使用MySQL,因為MySQL是最適合的網(wǎng)站開發(fā)數(shù)據(jù)庫[13]。MySQL關(guān)系數(shù)據(jù)庫在處理數(shù)據(jù)的方式上,并不是將所有數(shù)據(jù)都累積堆砌在同一個倉庫里,這樣的處理使得數(shù)據(jù)雜亂冗余,對于開發(fā)者來說,這決定稱不上是一個好的習(xí)慣,所以MySQL是將數(shù)據(jù)分離出來,分別保存在不同的表中,因此MySQL的讀寫是非??斓?,并且其靈活性也非常高。MySQL作為主流數(shù)據(jù)庫之一,它所使用的SQL語言是也是訪問數(shù)據(jù)的標(biāo)準(zhǔn)語言,這雖然不能稱之為優(yōu)點,但作為市場上日常采用的數(shù)據(jù)庫,使用標(biāo)準(zhǔn)語言必不可少,這決定了是否迎合大眾。MySQL軟件有兩個版本,分別社區(qū)版和商業(yè)版,用戶可以自己的現(xiàn)狀需求自行決定用哪一款,由于其體積小、速度快、成本低,特別需要強(qiáng)調(diào)的是開源這一點,這對于一般中小型網(wǎng)站的開發(fā)有著足夠的誘惑力,他們都會選擇MySQL作為網(wǎng)站數(shù)據(jù)庫[14]。2.5本章小結(jié)面向?qū)ο蟮姆治龊驮O(shè)計方法的優(yōu)勢不言而喻,它適合現(xiàn)代多數(shù)項目的開發(fā),而本項目也是如此。而Python被稱為膠水語言,榮獲此美稱,是源于他那異常強(qiáng)大和豐富的庫。Django是作為Python的定制框架,對于開發(fā)者來說,使用難度并不高,即使是剛剛?cè)腴T,也極其容易上手。MySQL數(shù)據(jù)庫就不用一再強(qiáng)調(diào)其優(yōu)越性了,作為目前最流行的關(guān)系型數(shù)據(jù)庫之一,尤其在WEB應(yīng)用方面,放棄使用MySQL而另選其他關(guān)系數(shù)據(jù)庫實在不明智,沒有人會這么去做,因為它就是最適合的,完全沒有另辟蹊徑的必要。需求分析本章主要是對系統(tǒng)做出詳細(xì)的需求分析,并結(jié)合需求綜合考慮了系統(tǒng)在實現(xiàn)方面的可行性,參考這些因素設(shè)計出系統(tǒng)解決方案。3.1 運維故障管理系統(tǒng)功能需求分析3.1.1背景隨著時代的高速發(fā)展,全面信息化時代逐漸來臨,國內(nèi)企業(yè)信息化越來越深入,這是一個很好的局面,隨之而來也產(chǎn)生了很多問題,IT運維部門的負(fù)擔(dān)越來月嚴(yán)重,IT設(shè)備和軟件的運行維護(hù)工作都是他們負(fù)責(zé),這份工作變得越來越復(fù)雜,技術(shù)難度也提高了不少檔次,所以成為一個優(yōu)秀的運維人員并不是一個輕松的活,要求之高,之嚴(yán)都已經(jīng)到了一個新高度。首先,無法否認(rèn)的是IT設(shè)備與軟件越來越大程度地參與到實際的生產(chǎn)過程中并且承擔(dān)的角色也越來越重要。隨著時代的高速發(fā)展,全面信息化時代逐漸來臨,國內(nèi)企業(yè)信息化越來越深入,這是一個很好的局面,隨之而來也產(chǎn)生了很多問題,IT運維部門的負(fù)擔(dān)越來月嚴(yán)重,IT設(shè)備和軟件的運行維護(hù)工作都是他們負(fù)責(zé),在新形式下,這份工作變得越來越復(fù)雜,技術(shù)難度也提高了不少檔次,所以成為一個優(yōu)秀的運維人員并不是一個輕松的活,要求之高,之嚴(yán)都已經(jīng)到了一個新高度。首先,無法否認(rèn)的是IT設(shè)備與軟件越來越大程度地參與到實際的生產(chǎn)過程中并且承擔(dān)的角色也越來越重要。生產(chǎn)過程中這些設(shè)備與軟件發(fā)生故障時,將對企業(yè)造成不可避免的巨大影響,那么如何快速的捕獲故障信息并且定位故障原因,對于運維人員來說,是能極大提高解決故障效率的因素,從而降低企業(yè)損失。很多企業(yè)都會部署一套運維管理系統(tǒng)來提高運維效率。3.1.2需求運維故障管理系統(tǒng)服務(wù)于企業(yè)用戶,企業(yè)部門很多,不同部門的用戶在運維故障管理過程中參與的環(huán)節(jié)不同,不同用戶應(yīng)分配不同權(quán)限。用戶根據(jù)部門進(jìn)行分類。系統(tǒng)管理員錄入企業(yè)相關(guān)項目以便發(fā)生故障時關(guān)聯(lián)影響范圍,同時添加用戶郵件組,當(dāng)故障發(fā)生時及時通知相關(guān)負(fù)責(zé)人進(jìn)維修,用戶管理模塊需求整理如下表表3.1系統(tǒng)管理員用戶操作系統(tǒng)管理員添加用戶并分配權(quán)限、添加用戶組、添加項目、添加郵件組以及普通用戶允許的其他操作故障管理模塊是運維故障管理系統(tǒng)中的核心部分,因此對企業(yè)內(nèi)所有用戶開放,用戶按各自所有權(quán)新增故障類性,新增故障類型,以及查看修改故障列表,更新列表,故障管理模塊需求如下表:(故障管理模塊的用戶大致分為故障匯報用戶和故障接受用戶)表3.2故障管理用戶方基礎(chǔ)操作故障匯報方新建故障類型,新增故障,查看故障列表故障接收方更改故障狀態(tài),分析故障原因,擬定解決方案統(tǒng)計版是運維故障管理系統(tǒng)的信息展示模塊,主要功能是將故障統(tǒng)計并制作相關(guān)圖表:餅圖,折線圖等,以便用戶直觀地了解到故障以及故障嚴(yán)重程度的分布。提供運維人員準(zhǔn)確數(shù)據(jù),用于管理層決策。系統(tǒng)總體模塊框架如下圖:圖3.3總體框架圖系統(tǒng)模塊功能描述如下:用戶管理模塊:系統(tǒng)用戶管理模塊主要是為系統(tǒng)管理員服務(wù),系統(tǒng)管理員將企業(yè)內(nèi)的普通用戶添加至系統(tǒng)登錄表中,并分配給這些用戶權(quán)限。,系統(tǒng)管理員添加用戶組以分類用戶。系統(tǒng)管理員進(jìn)行項目管理添加線上項目。系統(tǒng)管理員通過郵箱管理批量操作郵件;故障管理模塊:可操作新增故障類別,新建故障,查看故障列表,更改故障狀態(tài),分析故障原因,擬定解決方案;統(tǒng)計板模塊:展示故障信息,自定義故障統(tǒng)計圖表;系統(tǒng)用例圖:圖3.4系統(tǒng)用例圖用例規(guī)約以下表為例用例名稱用戶組角色系統(tǒng)管理員用例說明主要功能是系統(tǒng)管理員對用戶進(jìn)行批量增刪改操作;同時批量分配權(quán)限前置系統(tǒng)管理員登陸基本事件參與者行為系統(tǒng)反饋1.進(jìn)入權(quán)限管理中用戶組界面,點擊添加用戶組按鈕2.輸入用戶組名稱,選擇用戶組成員并提交3.點擊分配權(quán)限按鈕,勾選權(quán)限并提交1.展示當(dāng)前已有用戶組,點擊添加按鈕后彈出彈窗,提示輸入信息2.系統(tǒng)比對用戶組名,判是否重名,不重名添加成功,否則提示3.權(quán)限分配成功異常事件參與者動作系統(tǒng)響應(yīng)用戶組重名內(nèi)容為空1.提示“用戶組重名”2.提示“內(nèi)容為空”后置頁面自動刷新,展示新增內(nèi)容用例名稱新建故障角色普通用戶用例說明主要功能是讓普通用戶對其運維故障進(jìn)行增刪改等行為,并郵件通知運維人員前置普通用戶登陸,獲取個人權(quán)限基本事件參與者行為系統(tǒng)反饋進(jìn)入新建故障列表,點擊添加故障填寫故障簡述,類別等內(nèi)容點擊保存3.點擊通知按鈕,選擇郵件組提交1.展示故障列表,點擊添加按鈕后頁面跳轉(zhuǎn)至新建故障詳情頁2.保存成功5.彈出彈窗以選擇郵件組,提交成功異常事件參與者動作系統(tǒng)響應(yīng)1.必填內(nèi)容為空1.提示必填內(nèi)容后置頁面自動刷新,展示新增內(nèi)容3.2系統(tǒng)非功能性需求分析為了能將系統(tǒng)真正部署到企業(yè)實際的線上生產(chǎn)環(huán)境中,并在日常運維故障管理中發(fā)揮作用,不僅僅要完成相對應(yīng)的功能需求分析,還需要對相應(yīng)的性能需求進(jìn)行分析,確保系統(tǒng)居庸實用性,穩(wěn)定性,可擴(kuò)展性和易用性。系統(tǒng)操作方便簡單,界面設(shè)計應(yīng)當(dāng)布局合理邏輯清晰,盡量美觀。系統(tǒng)交互操作應(yīng)當(dāng)符合用戶操作習(xí)慣,色彩搭配協(xié)調(diào),便于用戶進(jìn)行較長時間的操作。整體風(fēng)格保持一致。系統(tǒng)還應(yīng)具備易維護(hù)性和一定的可擴(kuò)展性。本系統(tǒng)的設(shè)計初衷是用于運維故障管理,易于維護(hù)是系統(tǒng)可用性的重要考量指標(biāo)。同時具備一定可擴(kuò)展性,以便未來出現(xiàn)新的功能需求,系統(tǒng)能較快接入功能。安全性設(shè)計,系統(tǒng)用戶為企業(yè)內(nèi)部員工,用戶角色種類眾多,應(yīng)當(dāng)按照部門分類,各部門的權(quán)限分配工作需要做好。對于數(shù)據(jù)庫和服務(wù)器的訪問需要有嚴(yán)格的控制。普通的用戶對數(shù)據(jù)的操作僅限于其被賦予了多少權(quán)限,以此保障數(shù)據(jù)庫的安全性。用戶體驗優(yōu)良,用戶只需要登錄瀏覽器訪問正確的網(wǎng)址即可進(jìn)行操作,無需安裝客戶端。界面簡單友好,用戶能夠輕松掌握系統(tǒng)響應(yīng)快速高效,隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,用戶對于網(wǎng)站頁面的響應(yīng)時間要求越來越高,根據(jù)3-5-8原則,即用戶請求發(fā)出后三秒內(nèi)收到系統(tǒng)回應(yīng),用戶將感受到系統(tǒng)優(yōu)良的性能,五秒內(nèi)得到響應(yīng)時間用戶可以接受,當(dāng)響應(yīng)在八秒以上,用戶將對系統(tǒng)失去信心,本系統(tǒng)的響應(yīng)時間應(yīng)該盡可能在三秒以內(nèi)。3.3 系統(tǒng)可行性通過對3.1節(jié)的需求分析的理解,進(jìn)行系統(tǒng)可行性分析當(dāng)代企業(yè)信息化程度越來越高,設(shè)備及應(yīng)用變得越來越龐大,越來越復(fù)雜。日常運維中出現(xiàn)各種各樣的故障成為不可避免的問題,而解決故障也越來越復(fù)雜,及時如此,企業(yè)對故障解決的效率要求仍然越來越高。運維故障管理系統(tǒng)正是為填補(bǔ)企業(yè)這樣的需求而設(shè)計。3.3.1技術(shù)可行性分析系統(tǒng)基于django框架由Python語言開發(fā),Python被稱為膠水語言,具有非常強(qiáng)大且豐富的庫,其可移植性與擴(kuò)展性非常優(yōu)秀。Django是Python中定制框架[12],非常方便且易于應(yīng)用。而Mysql數(shù)據(jù)庫是最流行的關(guān)系型數(shù)據(jù)庫,在WEB應(yīng)用方面,MySQL是最合適不過的關(guān)系數(shù)據(jù)庫。采用B/S架構(gòu),使用開源數(shù)據(jù)庫Mysql服務(wù)器進(jìn)行連接,通過瀏覽器訪問系統(tǒng)。所以在技術(shù)是可行的。3.3.2經(jīng)濟(jì)成本可行性分析運維故障管理系統(tǒng)的功能暫不復(fù)雜,采用的django框架非常易于應(yīng)用,且是開源框架,而Mysql數(shù)據(jù)庫也是開源軟件,所以系統(tǒng)開發(fā)成本估算并不高。而系統(tǒng)給企業(yè)運維故障管理帶來的功能性極大提高故障解決效率,從而降低企業(yè)損失。所以對于企業(yè)來說,經(jīng)濟(jì)成本上是可行的。3.3.3開發(fā)環(huán)境可行性分析本系統(tǒng)開發(fā)環(huán)境如下:Windows系統(tǒng)64位Django1.11開發(fā)框架Mysql數(shù)據(jù)庫Pycharm編譯器Python3.6.5以上產(chǎn)品均可在各自官網(wǎng)上進(jìn)行下載,部分產(chǎn)品可免費試用。3.3本章小結(jié)本章主要對運維故障管理系統(tǒng)各個模塊的功能進(jìn)行了詳細(xì)分析,并且歸納了需要考慮的問題,為系統(tǒng)設(shè)計提供詳細(xì)的參考。在系統(tǒng)設(shè)計時,需要保證覆蓋到需求分析。對系統(tǒng)可行性分析確保本課題的實踐性,同時擴(kuò)展了一些非功能性需求,在系統(tǒng)實現(xiàn)過程中也要考慮到這些非功能性需求。第四章 系統(tǒng)設(shè)計本章主要介紹運維故障管理系統(tǒng)數(shù)據(jù)庫存儲方案設(shè)計以及界面原型設(shè)計。4.1總體架構(gòu)程序設(shè)計4.1.1系統(tǒng)技術(shù)框架運維故障管理系統(tǒng)的總體技術(shù)架構(gòu)采用Web開發(fā)中的B/S架構(gòu),這有一部分原因其實是根據(jù)客戶角度,通??蛻舳紩訔壴瓉淼腃/S架構(gòu)模式麻煩,能直接使用瀏覽器登錄系統(tǒng)何必再多安裝客戶端。這種模式統(tǒng)一了客戶在各自機(jī)器的瀏覽器去訪問系統(tǒng),將系統(tǒng)功能實現(xiàn)的核心分布到服務(wù)器上,系統(tǒng)的開發(fā),維護(hù)和使用從某種程度上簡單化了,服務(wù)器架構(gòu)構(gòu)造簡單,分工明確,業(yè)務(wù)邏輯清晰。系統(tǒng)實現(xiàn)過程中運用了以python語言為基礎(chǔ)的django框架,后臺數(shù)據(jù)庫采用了目前流行且最適合web應(yīng)用開發(fā)的開源數(shù)據(jù)庫Mysql。在過去的Web應(yīng)用開發(fā)中,多數(shù)應(yīng)用采取C/S結(jié)構(gòu),但是C/S存在的種種結(jié)構(gòu)也逐漸暴露出來,所以在此基礎(chǔ)上提出了B/S,用通用瀏覽器實現(xiàn)原來需要在復(fù)雜的專用軟件上實現(xiàn)的功能,減輕客戶機(jī)的負(fù)擔(dān),同時節(jié)約了開發(fā)成本。無論從經(jīng)濟(jì)角度還是開發(fā)的難易程度,采取B/S結(jié)構(gòu)都是很好的選擇。但隨之而來的服務(wù)器負(fù)擔(dān)加重的問題,也需要重視,一旦服務(wù)器崩潰,后果非常嚴(yán)重,所以系統(tǒng)真正部署到實際生產(chǎn)環(huán)境中是,應(yīng)當(dāng)備有數(shù)據(jù)庫存儲服務(wù)器,以防萬一。4.1.2系統(tǒng)總體設(shè)計系統(tǒng)總體設(shè)計是參考了MVC架構(gòu)的,而django這樣一個開源框架也是基于MVC構(gòu)造的。Web服務(wù)器向用戶傳送頁面。Django把控制層封裝,只要調(diào)用相應(yīng)的方法,就可以用很少的代碼完成很多事情。用戶界面在瀏覽器前端頁面顯示,提供給用戶簡單易用的操作來使用系統(tǒng)功能。業(yè)務(wù)邏輯層處理具體的業(yè)務(wù)邏輯和操作,主要是運維故障管理系統(tǒng)中故障管理,用戶管理和統(tǒng)計這幾個模塊的業(yè)務(wù)邏輯與操作。業(yè)務(wù)邏輯層通過數(shù)據(jù)存儲層連接Mysql數(shù)據(jù)庫。系統(tǒng)總體結(jié)構(gòu)圖如下圖4.1系統(tǒng)結(jié)構(gòu)圖4.2數(shù)據(jù)庫設(shè)計本系統(tǒng)采用Mysql作為數(shù)據(jù)庫,系統(tǒng)的部分?jǐn)?shù)據(jù)表設(shè)計詳細(xì)描述如下。4.2.1用戶管理模塊相關(guān)表(1)用戶信息表accounts_user用戶信息表存儲著企業(yè)用戶的詳細(xì)信息,包括ID,用戶名,用戶登錄密碼,用戶聯(lián)系方式,用戶郵箱,以及狀態(tài)等。用戶密碼在落庫時進(jìn)行加密,用戶郵箱信息將在郵件管理用到,對郵件管理進(jìn)行郵件組設(shè)置時,系統(tǒng)通過輸入的用戶ID來查找用戶對應(yīng)的郵箱地址。用戶信息表(accounts_user)具體如下:表4.1用戶信息表FieldNameFiledTypeSizeComentIdint11主鍵,用戶序號passwordvarchar128登錄密碼,加密usernamevarchar40用戶名emailvarchar255郵件地址mobilevarchar30手機(jī)號碼fullnamevarchar64用戶全名Is_activetinyint1狀態(tài)Is_superusertinyint1是否超級管理員Last_logindatetime6上次登錄時間Date_joineddatetime6添加時間用戶組信息表accounts_user_group:包括用戶組id,用戶組名稱,用戶id,用戶名表4.2用戶組信息表FieldNameFiledTypeSizeComentgroup_idint11用戶組序號group_namevarchar40用戶組名idint11用戶序號usernamevarchar40用戶名用戶組授權(quán)表auth_group_permission,包括id,用戶組id,權(quán)限id表4.3用戶組授權(quán)表FieldNameFiledTypeSizeComentidint11記錄號group_idint11用戶組idPermission_idint11權(quán)限id權(quán)限表auth_permission表4.4權(quán)限表FieldNameFiledTypeSizeComentIdint11序號namecarchar255權(quán)限操作名稱Content_type_idint11權(quán)限操作idcodenamevarchar100權(quán)限操作功能描述4.2.2故障管理模塊相關(guān)表故障類型表content_type表4.5故障類型表FieldNameFiledTypeSizeComentidchar32故障類型序號namevarchar255故障類型名稱故障列表content_content故障列表時運維故障管理系統(tǒng)中的核心表,記錄下每次故障發(fā)生時,由用戶錄入系統(tǒng)中的故障,是整個系統(tǒng)中最重要的內(nèi)容,包含故障id,故障描述,故障等級,影響范圍,故障原因,解決方案,當(dāng)前狀態(tài),發(fā)生時間以及修復(fù)結(jié)束時間等表4.6故障列表FieldNameFiledTypeSizeComentidchar32序號titlevarchar255故障簡述levelint11級別effectlongtext影響范圍reasonslongtext原因solutionlongtext解決方案statusint11當(dāng)前狀態(tài)improveint11改進(jìn)負(fù)責(zé)人Contentlongtext故障現(xiàn)象描述start_timedatetime6發(fā)生時間end_timedatetime6結(jié)束時間ctimedatetime6修改時間author_idint11匯報人idproject_idint11項目idtype_idchar32故障類型id4.2.3其他項目表accounts_project表4.7項目表FieldNameFiledTypeSizeComentidint11序號namevarchar64項目名稱descriptionvarchar256項目描述4.3界面設(shè)計由于本系統(tǒng)并非企業(yè)運營中所使用的主系統(tǒng),系統(tǒng)定位為輔助性質(zhì),所以系統(tǒng)界面不宜復(fù)雜,界面風(fēng)格遵從簡潔設(shè)計,操作簡單易用。系統(tǒng)目錄分級不宜超過三級目錄,最好控制在兩層目錄。系統(tǒng)目錄至于整個界面最左,符合用戶操作習(xí)慣。系統(tǒng)界面中有刪除,新增修改等功能,部分界面直接跳轉(zhuǎn)至指定界面,而另一部分界面選擇在當(dāng)前界面彈出彈窗,主要取決與頁面展示內(nèi)容量。頁面需要展示的信息較多時,跳轉(zhuǎn)至相應(yīng)頁,當(dāng)需要展示內(nèi)容很少時,以彈窗形式。有表格的頁面應(yīng)展示當(dāng)前頁與總頁數(shù),用可以自定義每頁顯示多少條數(shù)據(jù)。系統(tǒng)整體頁面如下:圖4.3.1系統(tǒng)整體頁面4.4本章小結(jié)本章主要就運維管理系統(tǒng)的總體框架設(shè)計,系統(tǒng)中相關(guān)表設(shè)計以及界面設(shè)計做出詳細(xì)介紹。MVC模式非常適合當(dāng)前系統(tǒng)開發(fā),而B/S結(jié)構(gòu)也是目前比較常用的架構(gòu),大大降低了開發(fā)成本與維護(hù)成本,是系統(tǒng)實現(xiàn)的可行性極大提高。簡潔的頁面設(shè)計很好地提高用戶使用體驗。系統(tǒng)實現(xiàn)本文根據(jù)系統(tǒng)設(shè)計,對系統(tǒng)功能進(jìn)行開發(fā)實現(xiàn)。5.1 系統(tǒng)主要頁面及代碼實現(xiàn)5.1.1登錄界面圖5.1登錄界面功能說明:用戶輸入用戶名與密碼,點擊登錄,密碼與數(shù)據(jù)庫比對,如果密碼正確進(jìn)入系統(tǒng),密碼錯誤,系統(tǒng)拋出提示:用戶名或密碼不正確。管理員登錄界面與此界面相同。代碼如下:classLoginForm(forms.Form):
username=forms.CharField(required=True,label=u"用戶名",error_messages={'required':u'請輸入用戶名'},widget=forms.TextInput(attrs={'placeholder':u"用戶名"}))
password=forms.CharField(required=True,label=u"密碼",error_messages={'required':u'請輸入密碼'},widget=forms.PasswordInput(attrs={'placeholder':u"密碼"}))
def__init__(self,request=None,*args,**kwargs):
self.request=request
self.user_cache=None
super(LoginForm,self).__init__(*args,**kwargs)
defclean(self):
username=self.cleaned_data.get('username')
password=self.cleaned_data.get('password')
ifusernameandpassword:
self.user_cache=auth.authenticate(username=username,password=password)
ifself.user_cacheisNone:
raiseforms.ValidationError(u'賬號密碼不匹配')
returnself.cleaned_data
defget_user(self):
returnself.user_cache5.1.2系統(tǒng)首頁 圖5.2系統(tǒng)首頁功能說明:用戶可以點擊界面左邊導(dǎo)航欄使用系統(tǒng)功能。5.1.3用戶管理界面圖5.3用戶管理頁面功能說明:用戶管理界面可以進(jìn)行用戶添加刪除,修改操作。由于展示內(nèi)容角度喲,點擊按鈕后跳轉(zhuǎn)至對應(yīng)頁面,進(jìn)行操作。用戶管理的相關(guān)操作需要進(jìn)行保存確認(rèn)。添加用戶的實現(xiàn)代碼如下:defaccounts_add(request):
error=""
ifrequest.method=="POST":
groups=request.POST.getlist('groups')
new_username=request.POST.get('username')
username=User.objects.filter(username=new_username)
form=UserForm(request.POST)
ifusername:
error=u'該賬號已存在!'
else:
ifform.is_valid():
user=form.save(commit=False)
user.set_password(form.cleaned_data['password'])
user.save()
user.groups.clear()
user.groups.add(*groups)
returnHttpResponseRedirect(reverse('accounts_user'))
else:
form=UserForm()
groups=get_groups(request)
print(groups)
request.breadcrumbs((('首頁','/'),('用戶列表',reverse('accounts_user')),('添加用戶',reverse('accounts_add'))))
returnrender(request,'accounts/user/user_add.html',{'request':request,'form':form,'error':error,'groups':groups})編輯用戶代碼如下:defaccounts_edit(request):
error=""
id=request.GET.get('id')
ifid:
try:
user=User.objects.get(id=id)
user.password=""
form=UserForm(instance=user)
form.groups=(',').join([foruinuser.groups.all()])ifuser.groups.all()else''
except:
error=u"不存在"
form=""
ifrequest.method=="POST":
groups=request.POST.getlist('groups')
user=User.objects.get(id=id)
old_password=user.password
form=UserForm(request.POST,instance=user)
ifform.is_valid():
user=form.save(commit=False)
ifuser.password:
user.set_password(form.cleaned_data['password'])
else:
user.password=old_password
user.save()
user.groups.clear()
user.groups.add(*groups)
returnHttpResponseRedirect(reverse('accounts_user'))
groups=get_groups(request)
request.breadcrumbs((('首頁','/'),('用戶管理',reverse('accounts_user')),('編輯用戶',reverse('accounts_edit'))))
returnrender(request,'accounts/user/user_edit.html',{'request':request,'form':form,'id':id,'error':error,'groups':groups})5.1.4故障管理界面故障列表界面如下圖5.4故障列表界面功能說明:用戶在這個頁面新增修改故障,并通知相關(guān)負(fù)責(zé)人。新建故障需要填寫的信息較多,且為必填。故障對象類定義如下:classContent(models.Model):
fms_level=(
(0,u"非常嚴(yán)重"),
(1,u"嚴(yán)重"),
(2,u"中等"),
(3,u"一般"),
(4,u"無影響"),
)
fms_status=(
(0,u"處理中"),
(1,u"已恢復(fù)"),
(2,u"改進(jìn)中"),
(3,u"已完結(jié)"),
)
fms_improve=(
(0,u"開發(fā)"),
(1,u"運維"),
(2,u"機(jī)房"),
(3,u"網(wǎng)絡(luò)運營商"),
(4,u"第三方"),
)
fms_type=Type.objects.all().values_list('id','name')
fms_project=Project.objects.all().values_list('id','name')
id=models.UUIDField(blank=True,primary_key=True,auto_created=True,default=uuid.uuid4)
title=models.CharField(max_length=255,verbose_name=u'故障簡述',unique=True)
author=models.ForeignKey(User,verbose_name=u'創(chuàng)建者')
level=models.IntegerField(choices=fms_level,verbose_name=u'故障級別')
type=models.ForeignKey(Type,related_name='fms_type',verbose_name=u'故障類型',null=True)
project=models.ForeignKey(Project,related_name='fms_project',verbose_name=u'影響項目',null=True,on_delete=models.PROTECT)
effect=models.TextField(blank=True,verbose_name=u'故障影響')
reasons=models.TextField(blank=True,verbose_name=u'故障原因',null=True)
solution=models.TextField(blank=True,verbose_name=u'解決方案',null=True)
status=models.IntegerField(choices=fms_status,verbose_name=u'故障狀態(tài)')
improve=models.IntegerField(choices=fms_improve,verbose_name=u'主導(dǎo)改進(jìn)')
content=models.TextField(blank=True,verbose_name=u'故障分析')
start_time=models.DateTimeField(verbose_name=u'開始時間')
end_time=models.DateTimeField(verbose_name=u'結(jié)束時間')
ctime=models.DateTimeField(auto_now_add=True,verbose_name=u'創(chuàng)建時間')添加故障界面如下:圖5.5添加故障頁面添加故障代碼如下:deffms_add(request):
error=""
ifrequest.method=="POST":
title=Content.objects.filter(title=request.POST.get('title'))
form=ContentForm(request.POST)
iftitle:
error="簡述標(biāo)題沖突!"
else:
ifform.is_valid():
tmp=form.save(commit=False)
tmp.author=request.user
tmp.save()
returnHttpResponseRedirect(reverse('fms_list'))
else:
form=ContentForm()
request.breadcrumbs((('首頁','/'),('故障列表',reverse('fms_list')),('添加故障',reverse('fms_add'))))
returnrender(request,'fms/fms_add.html',{'request':request,'form':form,'error':error})故障類型界面 圖5.6故障類型頁面功能說明:用戶新建刪除故障類型,故障類型是新建故障時的必填信息,在新建故障時,應(yīng)先進(jìn)行新增故障類型操作。故障類型新增代碼如下:deftype_add(request):
error=""
ifrequest.method=="POST":
type_name=request.POST.get('type_name')
name=Type.objects.filter(name=type_name)
ifname:
error="類型名稱沖突!"
else:
Type.objects.create(name=type_name)
returnHttpResponseRedirect(reverse('type_add'))
else:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 元宵節(jié)日記匯編9篇
- 物流管理專業(yè)求職信
- 銷售工作心得體會范文-心得體會范文
- 人性的弱點讀后感版
- 范文端午節(jié)活動方案合集6篇
- 我的青春我的夢演講稿3篇
- DB12∕T 1055-2021 機(jī)動車排放達(dá)標(biāo)維修服務(wù)規(guī)范
- 個人對老師的感言(160句)
- 脂代謝課件教學(xué)課件
- 骨髓檢查課件教學(xué)課件
- 2024年企業(yè)數(shù)據(jù)存儲與安全服務(wù)合同
- 2022年北京市公務(wù)員錄用考試《行測》真題及答案解析
- 江蘇省泰興市2024-2025學(xué)年高三上學(xué)期期中考試語文試題(含答案)
- 家長會教學(xué)課件
- 律師事務(wù)所律師事務(wù)所風(fēng)險管理手冊
- 靜脈曲張的護(hù)理查房課件
- 廣東省郵政公司招聘2024年應(yīng)屆高校畢業(yè)生(152人)高頻難、易錯點500題模擬試題附帶答案詳解
- 四川省綿陽市高中2022級第一次診斷性考試數(shù)學(xué)試題(解析版)
- DB11∕T 353-2014 城市道路清掃保潔質(zhì)量與作業(yè)要求
- 2024年代步車使用協(xié)議書模板
- 五年級上冊數(shù)學(xué)試題試卷(8篇)
評論
0/150
提交評論