版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要Python的創(chuàng)始人為荷蘭人吉多·范羅蘇姆
(GuidovanRossum)。翻譯過(guò)來(lái)是蟒蛇的意思。Python是一門(mén)完全面向?qū)ο蟮恼Z(yǔ)言,它廣義上是一些皆為對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。它的強(qiáng)大的一方面是體現(xiàn)在語(yǔ)法非常簡(jiǎn)單,易上手,代碼易讀寫(xiě)。它的導(dǎo)入引用非常簡(jiǎn)單快捷,并且它有超過(guò)3萬(wàn)的官方模塊,大大的方便了我們的開(kāi)發(fā)速度,當(dāng)然直接打包引用的話對(duì)于學(xué)習(xí)者的本身是不利的,但由于他的代碼的易讀性,源碼學(xué)習(xí)者們還是可以看的,這利于我們對(duì)功能原理的直接理解。隨著互聯(lián)網(wǎng)的發(fā)展及科技的進(jìn)步,Python也開(kāi)發(fā)出了幾個(gè)Web框架,其中的Django框架作為Python最重量級(jí)的框架,越來(lái)越受到人們的喜愛(ài)。通過(guò)這次疫情,讓我們深刻的了解到線上教育的重要性,鑒于上面的種種原因,我打算開(kāi)發(fā)一個(gè)線上教育網(wǎng)站,利用前后端分離的技術(shù),基于Django框架及Vue框架開(kāi)發(fā)出一個(gè)線上買(mǎi)教學(xué)視頻的網(wǎng)站,客戶可以根據(jù)自己的需求來(lái)購(gòu)買(mǎi)相關(guān)的課程。關(guān)鍵詞:教育網(wǎng)站前后端分離的技術(shù)Python語(yǔ)言Web框架Vue框架Abstract□PythonwasfoundedbyGuidovanRossum,aDutch.Ittranslatestopython.Pythonisacompletelyobject-orientedlanguage.Inabroadsense,itisanobject-orientedlanguage.Andfullysupportinheritance,overload,derivation,multiinheritance,whichisbeneficialtoenhancethereusabilityofsourcecode.Ontheonehand,itisverysimple,easytouseandeasytoreadandwrite.Itsimportandreferenceisverysimpleandfast,andithasmorethan30000officialmodules,whichgreatlyfacilitatesourdevelopmentspeed.Ofcourse,itisnotgoodforlearnerstopackageandreferencedirectly,butbecauseofthereadabilityofhiscode,thesourcecodelearnerscanstillseeit,whichisconducivetoourdirectunderstandingofthefunctionalprinciple.WiththedevelopmentofInternetandtheprogressofscienceandtechnology,Throughthisepidemic,letusdeeplyunderstandtheimportanceofonlineeducation.Inviewoftheabovereasons,Iplantodevelopanonlineeducationwebsite,usingthetechnologyoffront-endandback-endseparationpythonhasdevelopedseveralwebframeworks,amongwhichDjangoframework,astheheaviestframeworkofpython,ismoreandmorepopular.Throughthisepidemic,letusdeeplyunderstandtheimportanceofonlineeducation.Inviewoftheabovereasons,Iplantodevelopanonlineeducationwebsite,usingthetechnologyoffront-endandback-endseparation,basedontheDjangoframeworkandVueframework,todevelopanonlineteachingvideowebsite.Customerscanbuyrelevantcoursesaccordingtotheirownneeds.Keywords:thetechnologyofseparatingthefrontandbackofeducationwebsite;Pythonlanguagewebframework;Vueframework目錄1緒論 緒論1.1研究背景隨著現(xiàn)代科技的發(fā)展,以及IT行業(yè)的發(fā)展,各種培養(yǎng)人才機(jī)構(gòu)如同雨后春筍般出現(xiàn),但是由于線下教學(xué)的局限性,一個(gè)老師可能在一個(gè)班里只能教幾十個(gè)學(xué)生,而且必須在相同的地址去完成教學(xué)。同時(shí)線下教育的教學(xué)質(zhì)量有的時(shí)候會(huì)比較低。并且大部分情況下,老師教過(guò)的知識(shí)點(diǎn)他就不在重復(fù)的再去講了,學(xué)員們只能靠記憶或筆記去重復(fù)的學(xué)習(xí)。隨著國(guó)內(nèi)視頻,直播行業(yè)的不斷發(fā)展,大部分的人們都懂的并喜歡去通過(guò)網(wǎng)絡(luò)視頻去學(xué)習(xí),在這種情況下,線上教育學(xué)城網(wǎng)站的需求已經(jīng)非常具有必要了。因此,根據(jù)國(guó)內(nèi)線下教育存在的不足,線上教育學(xué)城網(wǎng)站具有實(shí)際的研究意義。1.2目的和意義線上教育學(xué)城網(wǎng)站需要為學(xué)習(xí)者們提供優(yōu)質(zhì)的教學(xué)視頻,這些視頻是經(jīng)過(guò)資深的老師經(jīng)過(guò)不斷的章節(jié)排版后,視頻錄制好上傳到線上網(wǎng)站,這樣就可以大大的提高教學(xué)的質(zhì)量,同時(shí)實(shí)現(xiàn)多人在線學(xué)習(xí)的教學(xué)模式。學(xué)員們可以在自己的手機(jī)或者電腦前就可以進(jìn)行學(xué)習(xí),當(dāng)然根據(jù)視頻學(xué)習(xí)完一便后,學(xué)員可以在購(gòu)買(mǎi)的視頻的有效期內(nèi)進(jìn)行重復(fù)的學(xué)習(xí),這樣就可以構(gòu)成資源的有效利用。能夠大大的讓學(xué)員在節(jié)約時(shí)間的同時(shí),受到更優(yōu)質(zhì),跟有效的教育。1.3課題研究現(xiàn)狀隨著信息技術(shù)迅速發(fā)展,現(xiàn)在的網(wǎng)絡(luò)速度越來(lái)越快,在4G的前提下,我們已經(jīng)可以實(shí)現(xiàn)了隨時(shí)隨地的觀看直播,在線觀看視頻,5G也在慢慢的普及覆蓋,更是在這次的疫情的影響下,讓人們對(duì)線上教育慢慢的接受及適應(yīng)了。在這些前提條件下,我個(gè)人覺(jué)得線上教育已經(jīng)走進(jìn)了人們的視線里,它的方便,快捷,隨時(shí)隨地就能進(jìn)行學(xué)習(xí)的模式早已深入人心。當(dāng)然現(xiàn)在的線上教育的缺口還是挺大的,所以我覺(jué)得,這個(gè)課題的研究很有價(jià)值。2開(kāi)發(fā)工具和技術(shù)簡(jiǎn)介2.1JetBrainsPyCharmPyCharm是由JetBrains開(kāi)發(fā)的一套開(kāi)發(fā)工具,它的發(fā)展史也是非常傳奇的,在進(jìn)10年來(lái)深受大家的喜愛(ài),它在界面的管理方面提供了兩種模式,白天及深夜模式。它不僅支持python的編寫(xiě),更是可以支持前端的各種語(yǔ)言的識(shí)別,及提示等等功能。是一個(gè)非常棒的編輯器。當(dāng)然它也是有很多特點(diǎn)的首先,PyCharm不僅擁有一般IDE所具有的功能,比如:界面的快捷對(duì)齊功能,高亮顯示代碼段,代碼提示,錯(cuò)誤語(yǔ)法的提示等等。它還具有自己一些獨(dú)特的功能,比如:多個(gè)運(yùn)行環(huán)境的自由切換,自帶數(shù)據(jù)庫(kù)視圖工具等等。2.2PythonPython的創(chuàng)始人為荷蘭人吉多·范羅蘇姆
(GuidovanRossum)。翻譯過(guò)來(lái)是蟒蛇的意思。Python是一門(mén)完全面向?qū)ο蟮恼Z(yǔ)言,它廣義上是一些皆為對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。它的強(qiáng)大的一方面是體現(xiàn)在語(yǔ)法非常簡(jiǎn)單,易上手,代碼易讀寫(xiě)。它的導(dǎo)入引用非常簡(jiǎn)單快捷,并且它有超過(guò)3萬(wàn)的官方模塊,大大的方便了我們的開(kāi)發(fā)速度,當(dāng)然直接打包引用的話對(duì)于學(xué)習(xí)者的本身是不利的,但由于他的代碼的易讀性,源碼學(xué)習(xí)者們還是可以看的,這利于我們對(duì)功能原理的直接理解。2.3前后端框架2.3.1Django框架Django,是開(kāi)發(fā)者們使用Python語(yǔ)言開(kāi)發(fā)開(kāi)出來(lái)的一套高效,語(yǔ)法簡(jiǎn)潔的重量級(jí)網(wǎng)絡(luò)框架,它是MVC模式的基礎(chǔ)下開(kāi)發(fā)出來(lái)的一套一個(gè)類(lèi)對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表的類(lèi)型。它在本身是支持一個(gè)模板語(yǔ)言的,也就是在全棧開(kāi)發(fā)時(shí),可以通過(guò)一個(gè)變量來(lái)代替部分的代碼,并且可以多處復(fù)用,更加的方便了我們的前后端結(jié)合的開(kāi)發(fā)。它還自帶一個(gè)admin管理后臺(tái),我們?cè)谂渲美镒?cè)后就可以使用。在這個(gè)框架里還支持DRF框架,這個(gè)框架是遵守resfulAPI標(biāo)準(zhǔn)的有利于我們前后端分離并快速的開(kāi)發(fā)項(xiàng)目。2.3.2Vue框架Vue.js是一套用于前端開(kāi)發(fā)的語(yǔ)言,它在原生的js上把一些常用的功能封裝起來(lái),語(yǔ)法也更加的簡(jiǎn)潔干練。Vue它是有著兩種使用環(huán)境的,在一般的情況下,它可以直接在前端的引用中直接調(diào)用Vue.js,在這個(gè)模式下我們可以簡(jiǎn)單的使用它的一些特性,它也封裝了很多的使用的方法,還有一種模式就是部署在node.js上面,這樣我們就可以直接新建Vue的前端項(xiàng)目??梢允褂盟娜刻匦?。它采用組件式的開(kāi)發(fā)模式,這樣它就可以在頁(yè)面的重復(fù)使用中非常方便,直接導(dǎo)入組件就可以實(shí)現(xiàn)頁(yè)面的重復(fù)使用在語(yǔ)法方面也比傳統(tǒng)的js更加簡(jiǎn)潔。3系統(tǒng)分析3.1系統(tǒng)可行性分析3.1.1經(jīng)濟(jì)可行性畢業(yè)設(shè)計(jì)體現(xiàn)出所學(xué)習(xí)的知識(shí)與技能才是重點(diǎn),因此本系統(tǒng)開(kāi)發(fā)后所造成的經(jīng)濟(jì)收益并不是很大的考慮范圍,而在開(kāi)發(fā)過(guò)程中所體現(xiàn)出來(lái)的系統(tǒng)開(kāi)發(fā)知識(shí)能力才是本系統(tǒng)的重點(diǎn)。同時(shí)本系統(tǒng)開(kāi)發(fā)時(shí)只需要有一臺(tái)普通的個(gè)人電腦就可以完成所有的開(kāi)發(fā)工作,所有經(jīng)濟(jì)收益問(wèn)題在這里來(lái)說(shuō)是可行得到。因此本系統(tǒng)在作為畢業(yè)設(shè)計(jì)來(lái)說(shuō)是一個(gè)非常適合的一個(gè)項(xiàng)目。3.1.2技術(shù)可行性本系統(tǒng)在Python環(huán)境上進(jìn)行搭建開(kāi)發(fā)。Python在出現(xiàn)到現(xiàn)在經(jīng)過(guò)多少代程序員的完善與發(fā)展。無(wú)論是在控制語(yǔ)句上,還是數(shù)據(jù)類(lèi)型的種類(lèi)上,或者是類(lèi)與對(duì)象的控制上,都有著其他很多其他開(kāi)發(fā)語(yǔ)言所不具有的先天性優(yōu)勢(shì)。特別是因?yàn)榈腜ython語(yǔ)言的面向?qū)ο箝_(kāi)發(fā)的特性,非常有利于以后對(duì)新系統(tǒng)二次開(kāi)發(fā)與維護(hù)。該系統(tǒng)我采用的前后端分離的技術(shù),后端采用Python中的Django框架,該框架下又支持restfulframework框架,可以簡(jiǎn)單快捷的開(kāi)發(fā)出數(shù)據(jù)接口,在現(xiàn)實(shí)中越來(lái)越流行起來(lái)了,前端我采用Vue框架,該框架可以一個(gè)一個(gè)頁(yè)面分離出來(lái),在相似的地方又可以重復(fù)引用,大大加快開(kāi)放速度。3.1.3運(yùn)行可行性此系統(tǒng)是基于Python語(yǔ)言的而開(kāi)發(fā)的一個(gè)系統(tǒng),非常小的資源耗費(fèi)。并且Python語(yǔ)言的跨平臺(tái)特性優(yōu)勢(shì)大。目前無(wú)論是個(gè)人電腦、還是大型服務(wù)器,在對(duì)Python的支持上都有著很好的兼容性,同時(shí)還有各種專(zhuān)門(mén)為Python開(kāi)發(fā)設(shè)計(jì)的軟件。所以本系統(tǒng)在運(yùn)行可行性的分析結(jié)果是可行的。綜上所述,無(wú)論是在經(jīng)濟(jì)上還是在技術(shù)上或者是外部的運(yùn)行環(huán)境上,本系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)都是在可以承受的范圍內(nèi)。3.2系統(tǒng)功能需求分析使用前后端分離的技術(shù)自上往下的方法對(duì)本系統(tǒng)進(jìn)行需求分析。了解本系統(tǒng)的需求后,基本定位下面的功能:本課題要求實(shí)現(xiàn)一個(gè)在線賣(mài)教學(xué)視頻的網(wǎng)站,同時(shí)系統(tǒng)要明確開(kāi)發(fā)前臺(tái)與后臺(tái)兩個(gè)不同部分面向不同的用戶類(lèi)群。前臺(tái)主要包括課程列表、支付計(jì)算、購(gòu)物車(chē)、個(gè)人主頁(yè)等功能模塊。后臺(tái)主要面向管理員用戶。所以這個(gè)系統(tǒng)主要的功能有用戶管理、老師信息管理、課程信息管理、課程詳情管理、訂單管理、視頻播放等功能模塊。3.2.1用戶管理用戶管理是系統(tǒng)管理的重要功能,這里的用戶可以分為普通用戶,管理人員,給管理員分配權(quán)限,管理人員可以進(jìn)入后臺(tái)站點(diǎn),這里我用的是Django中的xadmin后臺(tái)站點(diǎn),在管理員輸入賬號(hào)密碼正確之后,即可在后臺(tái)站點(diǎn)對(duì)用戶信息,老師信息,視頻信息等數(shù)據(jù)進(jìn)行增刪改查操作。然而在用戶管理中,是我們要非常重視的,因?yàn)槲覀兊南M(fèi)者,服務(wù)者就是用戶,具體的操作明細(xì):管理員在網(wǎng)頁(yè)上輸入后臺(tái)的網(wǎng)址,進(jìn)入后臺(tái)并登錄成功后,進(jìn)入系統(tǒng)首頁(yè),點(diǎn)擊用戶表,點(diǎn)擊添加按鈕,接下來(lái)就會(huì)出現(xiàn)在數(shù)據(jù)庫(kù)用戶表中相關(guān)字段,我們把對(duì)應(yīng)的數(shù)據(jù)錄入即可。刪除數(shù)據(jù)的花相對(duì)而來(lái)就比較簡(jiǎn)單了,直接選中要?jiǎng)h除的條目,點(diǎn)擊刪除按鈕即可。修改數(shù)據(jù)的話在選中數(shù)據(jù)后點(diǎn)及修改按鈕,把新的數(shù)據(jù)重新填寫(xiě)完后,再點(diǎn)及確認(rèn)按鈕就完成了。查看數(shù)據(jù)的話,管理員可以根據(jù)用戶表中的不同字段去查找用戶的相關(guān)信息。在管理員完成這些操作后,在點(diǎn)擊確認(rèn)后,系統(tǒng)會(huì)根據(jù)事先定義好的用戶表的字段的類(lèi)型及輸入的要求跟管理員填寫(xiě)的數(shù)據(jù)進(jìn)行校驗(yàn),如果符合則更新數(shù)據(jù)庫(kù),不符合就給出提示。3.2.2課程列表如圖3-1所示,在我設(shè)計(jì)課程列表時(shí)要考慮到的字段有課程分類(lèi):課程信息:課程章節(jié):課時(shí)信息:老師信息:價(jià)格策略:(限時(shí)免費(fèi)\限時(shí)折扣\限時(shí)滿減\原價(jià)\優(yōu)惠券),這里主要是在網(wǎng)站上面直接展示給用戶的課程相關(guān)信息。3.2.3課程詳細(xì)在我設(shè)計(jì)課程詳情時(shí)要考慮到的字段有課程章節(jié):、總章數(shù)、總課時(shí)、時(shí)間、老師信息。這里主要是在網(wǎng)站上面直接展示給用戶的課程相關(guān)詳細(xì)信息。富文本編輯器它具有非常豐富的文本編輯插件,可以很方便的為我們?cè)谏唐返脑斍轫?yè)面進(jìn)行商品的介紹信息進(jìn)行填寫(xiě),它不僅支持語(yǔ)法的格式,它還可以在上面直接c插入圖片,代碼段等等格式的文件內(nèi)容。3.2.4購(gòu)物車(chē)購(gòu)物車(chē)是用于用戶把自己喜歡的商品添加到一個(gè)位置保存起來(lái),并 且可以同時(shí)選擇一個(gè),多個(gè)商品去結(jié)算,去消費(fèi)的功能。在用戶在當(dāng)前商品下面點(diǎn)擊添加到購(gòu)物車(chē)后,在導(dǎo)航條上面的購(gòu)物車(chē)右上角就會(huì)顯示該用戶的當(dāng)前的購(gòu)物車(chē)的商品總數(shù),當(dāng)用戶點(diǎn)擊導(dǎo)航條上面的購(gòu)物車(chē)時(shí)就可以跳轉(zhuǎn)到購(gòu)物車(chē)頁(yè)面,里面有商品的相關(guān)信息,并且我們可以在商品的右邊選擇打勾或不打勾,打勾后,我們把這些數(shù)據(jù),商品信息,總價(jià)格等記錄下來(lái),跳轉(zhuǎn)到支付頁(yè)面。3.2.5視頻播放功能用戶登錄成功后,可以在線觀看免費(fèi)視頻或者已付費(fèi)視頻項(xiàng)目中有兩種視頻:收費(fèi)視頻[需要加密]和免費(fèi)視頻,網(wǎng)站上的免費(fèi)課是可以直接觀看的,對(duì)于這類(lèi)視頻我就沒(méi)有加上密,然而一些收費(fèi)的視頻相對(duì)來(lái)說(shuō)是知識(shí)產(chǎn)品,要保護(hù)好,我們要加密保護(hù)。3.3系統(tǒng)非功能需求3.3.1性能需求響應(yīng)時(shí)間:頁(yè)面的轉(zhuǎn)跳時(shí)間<=3s。3.3.2安全性保密性:對(duì)用戶數(shù)據(jù)進(jìn)行bs64加密,對(duì)視頻資源進(jìn)行加密保護(hù)權(quán)限控制:對(duì)用戶每一分鐘的登錄次數(shù)進(jìn)行限制,每分鐘能登錄3次防攻擊:對(duì)ip,高頻訪問(wèn)進(jìn)行限制。3.3.3可靠性易恢復(fù)性:每次的版本更新都在代碼倉(cāng)庫(kù)中保存,利于回滾,版本記錄容錯(cuò)性:在系統(tǒng)出錯(cuò)是不影響用戶的行為操作與數(shù)據(jù)。3.3.4易用性易學(xué)習(xí)性,易操作性,用戶錯(cuò)誤防御機(jī)制,用戶界面美觀。4項(xiàng)目實(shí)現(xiàn)4.1搭建環(huán)境1mkvirtualenvluffy如我們可以在這里指定使用那一個(gè)環(huán)境去運(yùn)行。2mkvirtualenvluffy-ppython3
其他相關(guān)命令:
通過(guò)以下的命令可以看這個(gè)環(huán)境下面已經(jīng)下載好的包:
piplist
如果我們要把這個(gè)環(huán)境下面的已經(jīng)安裝好的包的相關(guān)信息:requirements.txt
在虛擬環(huán)境下安裝項(xiàng)目運(yùn)行需要的包是可以通過(guò):pipinstall-rrequirements.txt提示:虛擬環(huán)境下它只對(duì)它本身的包及自身環(huán)境,跟python解析器的管理及配置,它對(duì)內(nèi)部包的源碼是沒(méi)有任何關(guān)系的我們?cè)趧?chuàng)建虛擬環(huán)境是是需要連接上外部的網(wǎng)絡(luò)的,下載的包也是要通過(guò)互聯(lián)網(wǎng)的連接進(jìn)行下載,我們?cè)趧?chuàng)建好虛擬環(huán)境后是直接在這個(gè)虛擬環(huán)境下工作的,這時(shí)我們的控制臺(tái)就會(huì)把虛擬環(huán)境的名稱(chēng)自動(dòng)的加載進(jìn)來(lái),我們就已經(jīng)進(jìn)入了這個(gè)環(huán)境中,要下載什么包就可以直接通過(guò)命令下載就可以了。4.1.1技術(shù)選型外部依賴(lài):1需要在阿里云的平臺(tái)注冊(cè)一個(gè)開(kāi)發(fā)者賬號(hào)2注冊(cè)支付寶的阿里云賬號(hào),如果可以購(gòu)買(mǎi)一個(gè)服務(wù)器,或者第一次使用的可以申請(qǐng)一個(gè)免費(fèi)外網(wǎng)服務(wù)器3注冊(cè)一個(gè)第三方短信接口平臺(tái)的賬號(hào)這里我選擇了一個(gè)提供免費(fèi)測(cè)試的容聯(lián)云平臺(tái)的接口4注冊(cè)一個(gè)可以對(duì)視頻進(jìn)行加密管理的第三方賬號(hào),可以是保利威平臺(tái)的5注冊(cè)一個(gè)代碼管理倉(cāng)庫(kù)的賬號(hào)可以是github,gitee都可以。6最好是可以申請(qǐng)一個(gè)域名進(jìn)行備案[ICP備案和公安部備案],如果沒(méi)有的話,可以注冊(cè)natapp依賴(lài)包安裝pipinstalldjangopipinstalldjangorestframework
pipinstallPymySQL
pipinstallPillow
pipinstalldjango-redis4.2搭建項(xiàng)目4.2.1創(chuàng)建項(xiàng)目cd~/Desktop/llufy
django-adminstartprojectluffyapi效果:4.2.2打開(kāi)項(xiàng)目在pycharm中打開(kāi)項(xiàng)目設(shè)置虛擬環(huán)境12啟動(dòng)django項(xiàng)目效果:提示:虛擬環(huán)境下它只對(duì)它本身的包及自身環(huán)境,跟python解析器的管理及配置,它對(duì)內(nèi)部包的源碼是沒(méi)有任何關(guān)系的。我們?cè)趧?chuàng)建虛擬環(huán)境是是需要連接上外部的網(wǎng)絡(luò)的,下載的包也是要通過(guò)互聯(lián)網(wǎng)的連接進(jìn)行下載,我們?cè)趧?chuàng)建好虛擬環(huán)境后是直接在這個(gè)虛擬環(huán)境下工作的,這時(shí)我們的控制臺(tái)就會(huì)把虛擬環(huán)境的名稱(chēng)自動(dòng)的加載進(jìn)來(lái),我們就已經(jīng)進(jìn)入了這個(gè)環(huán)境中,要下載什么包就可以直接通過(guò)命令下載就可以了。4.2.3調(diào)整目錄luffy/
├──docs/
#項(xiàng)目相關(guān)資料保存目錄
├──luffycity/
#前端項(xiàng)目目錄
├──luffyapi
├──logs/
#項(xiàng)目運(yùn)行時(shí)/開(kāi)發(fā)時(shí)日志目錄
├──manage.py
├──luffyapi/
#項(xiàng)目主應(yīng)用,開(kāi)發(fā)時(shí)的代碼保存
│
├──apps/
#開(kāi)發(fā)者的代碼保存目錄,以模塊[子應(yīng)用]為目錄保存
│
├──libs/
#第三方類(lèi)庫(kù)的保存目錄[第三方組件、模塊]
│
├──settings/
│
├──dev.py
#項(xiàng)目開(kāi)發(fā)時(shí)的本地配置
│
├──prop.py#項(xiàng)目上線時(shí)的運(yùn)行配置
│
├──urls.py
#總路由
│
├──utils/
#多個(gè)模塊[子應(yīng)用]的公共函數(shù)類(lèi)庫(kù)[自己開(kāi)發(fā)的組件]
└──scripts/
#保存項(xiàng)目運(yùn)營(yíng)時(shí)的腳本文件分不同環(huán)境進(jìn)行項(xiàng)目配置在開(kāi)發(fā)過(guò)程中,是分成兩大部分來(lái)看的:1開(kāi)發(fā)者本地環(huán)境,2項(xiàng)目上線后的服務(wù)器的環(huán)境。我們開(kāi)發(fā)的本地環(huán)境的環(huán)境,系統(tǒng)兼容版本,數(shù)據(jù)庫(kù)的版本,數(shù)據(jù)庫(kù)的賬號(hào)密碼等等都是不一樣的,所以我們?cè)谶M(jìn)行開(kāi)發(fā)的時(shí)候就應(yīng)該建立一個(gè)配置文件,在項(xiàng)目上線是直接通過(guò)修改配置文件把兩個(gè)不同的版本進(jìn)行切換就可以了。一般的情況在這個(gè)配置文件的名稱(chēng)就是settings,現(xiàn)在我們把這個(gè)配置文件復(fù)制出來(lái)分成兩份,在該項(xiàng)目下我們新建一個(gè)settings文件夾,在這個(gè)文件夾里新建兩個(gè)py文件dev.py,prod.py。接下來(lái),就可以根據(jù)在manage.py中根據(jù)不同的情況導(dǎo)入對(duì)應(yīng)的配置文件了4.3系統(tǒng)架構(gòu)設(shè)計(jì)流程圖是將一個(gè)操作的各個(gè)順序步驟按照一定的邏輯展示出來(lái)的一個(gè)圖形。只要這個(gè)操作有過(guò)程,那么肯定有一個(gè)流程。流程圖就是對(duì)于描述這個(gè)操作的解釋。流程圖對(duì)于我們進(jìn)行現(xiàn)行的過(guò)程或者根據(jù)需要進(jìn)行新的改進(jìn)的時(shí)候有著非常重要的作用。流程設(shè)計(jì)如下圖3.1所示。圖3.1系統(tǒng)流程設(shè)計(jì)圖4.4數(shù)據(jù)庫(kù)設(shè)計(jì)用戶表:字段名字段描述username必選。150個(gè)字符以內(nèi)。用戶名可能包含字母數(shù)字,_,@,+.和-個(gè)字符。first_name可選(blank=True)。少于等于30個(gè)字符。last_name可選(blank=True)。少于等于30個(gè)字符。email可選(blank=True)。郵箱地址。password必選。密碼的哈希加密串。(Django不保存原始密碼)。原始密碼可以無(wú)限長(zhǎng)而且可以包含任意字符。groups與Group之間的多對(duì)多關(guān)系。user_permissions與Permission之間的多對(duì)多關(guān)系。is_staff布爾值。設(shè)置用戶是否可以訪問(wèn)Admin站點(diǎn)。is_active布爾值。指示用戶的賬號(hào)是否激活。它不是用來(lái)控制用戶是否能夠登錄,而是描述一種帳號(hào)的使用狀態(tài)。is_superuser是否是超級(jí)用戶。超級(jí)用戶具有所有權(quán)限。last_login用戶最后一次登錄的時(shí)間。date_joined賬戶創(chuàng)建的時(shí)間。當(dāng)賬號(hào)創(chuàng)建時(shí),默認(rèn)設(shè)置為當(dāng)前的date/time。課程表:字段名字段描述course_type可選類(lèi)型((0,'付費(fèi)'),(1,'VIP專(zhuān)享'),(2,'學(xué)位課程'))level_choices可選類(lèi)型((0,'初級(jí)'),(1,'中級(jí)'),(2,'高級(jí)'),)status_choices可選類(lèi)型((0,'上線'),(1,'下線'),(2,'預(yù)上線'),)name課程名稱(chēng)字符類(lèi)型course_img封面圖片brief詳情介紹為2048的字節(jié)level難度等級(jí)對(duì)應(yīng)上面的level_choices可選狀態(tài),默認(rèn)為中級(jí)pub_date發(fā)布日期時(shí)間類(lèi)型period建議學(xué)習(xí)周期(day)默認(rèn)為7天attachment_path課件路徑可以為空表示文件在服務(wù)器的絕對(duì)路徑status課程狀態(tài)表示該課程是否可直接觀看,默認(rèn)為假course_category課程分類(lèi)是課程分類(lèi)表的外鍵是否為假數(shù)據(jù)默認(rèn)為真students學(xué)習(xí)人數(shù)默認(rèn)為0lessons總課時(shí)數(shù)量默認(rèn)為0pub_lessons課時(shí)更新數(shù)量默認(rèn)為0price課程原價(jià)默認(rèn)為0teacher授課老師4.5登錄注冊(cè)4.5.1后端實(shí)現(xiàn)登陸認(rèn)證Django默認(rèn)已經(jīng)提供了認(rèn)證系統(tǒng)。認(rèn)證系統(tǒng)包含:用戶管理權(quán)限用戶組密碼哈希系統(tǒng)用戶登錄或內(nèi)容顯示的表單和視圖一個(gè)可插拔的后臺(tái)系統(tǒng)Django默認(rèn)用戶的認(rèn)證機(jī)制依賴(lài)Session機(jī)制,我們?cè)陧?xiàng)目中將引入JWT認(rèn)證機(jī)制,將用戶的身份憑據(jù)存放在Token中,然后對(duì)接Django的認(rèn)證系統(tǒng),4.5.2Django用戶模型類(lèi)Django認(rèn)證系統(tǒng)中提供了用戶模型類(lèi)User保存用戶的數(shù)據(jù),默認(rèn)的User。4.5.3創(chuàng)建用戶模塊的子應(yīng)用python../../manage.pystartappusers在settings.py文件中注冊(cè)子應(yīng)用。INSTALLED_APPS=[
...
'users',
]4.5.4創(chuàng)建自定義的用戶模型類(lèi)Django認(rèn)證系統(tǒng)本身它就提供了一個(gè)User模型,它本身就為我們定義好了一些常用的字段,但這個(gè)系統(tǒng)畢竟是外國(guó)人開(kāi)發(fā)出來(lái)的,跟我們中國(guó)人的一些用戶信息不太匹配,我們可以在這個(gè)User模型類(lèi)里進(jìn)行修改,這里一定要切記,沒(méi)有必要的話不要對(duì)它的字段進(jìn)行修改或刪除,我們可以直接增加上我們需要的字段就可以,這樣直接進(jìn)行數(shù)據(jù)遷移就不會(huì)保錯(cuò),當(dāng)然如果考慮到數(shù)據(jù)的冗余的話,我們可以把所有與User模型相關(guān)的都刪除掉,在進(jìn)行數(shù)據(jù)的遷移。這樣就可以很完美實(shí)現(xiàn)了。classUser(AbstractUser):
"""用戶模型類(lèi)"""
mobile=models.CharField(max_length=11,unique=True,verbose_name='手機(jī)號(hào)')
?
classMeta:
db_table='ly_users'
verbose_name='用戶'
verbose_name_plural=verbose_name我們自定義User模型是不會(huì)被該框架直接識(shí)別的,我們需要進(jìn)行一下配置的更改。在配置文件中進(jìn)行設(shè)置AUTH_USER_MODEL='users.User'AUTH_USER_MODEL參數(shù)的設(shè)置以點(diǎn).來(lái)分隔,表示應(yīng)用名.模型類(lèi)名。注意:Django建議我們對(duì)于AUTH_USER_MODEL參數(shù)的設(shè)置一定要在第一次數(shù)據(jù)庫(kù)遷移之前就設(shè)置好,否則后續(xù)使用可能出現(xiàn)未知錯(cuò)誤。執(zhí)行數(shù)據(jù)庫(kù)遷移的控制臺(tái)命令如下首先是第一條命令是進(jìn)行數(shù)據(jù)庫(kù)的遷移,第二條命令是數(shù)據(jù)庫(kù)的同步在我們每次的新建表,或者修改了表里的任何字段,我們都要執(zhí)行下面的兩條命令:pythonmanage.pymakemigrations
pythonmanage.pymigrate4.5.5DjangoRESTframeworkJWT在用戶注冊(cè)或登錄后,我們想記錄用戶的登錄狀態(tài),或者為用戶創(chuàng)建身份認(rèn)證的憑證。我們不再使用Session認(rèn)證機(jī)制,而使用JsonWebToken認(rèn)證機(jī)制。4.5.6JWT的構(gòu)成JWT就一段字符串,它由三部分組成:Sdsdgdgfdg1NiIssdgdgfdhhfVCJ9.eyJzdWasfsdfdsfIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.jkhTJVA95OasfsdfsdfGSDFhgfhs它分為三大部分:第一部分叫做為頭部(header),這部分是攜帶這特殊信息的。第二部分簡(jiǎn)稱(chēng)它為載荷(payload,類(lèi)似于飛機(jī)上承載的物品),這部分?jǐn)y帶的信息是非常重要的,也是唯一的。第三部分是簽證(signature).這一部分的功能是用來(lái)重組驗(yàn)證的,把前兩部分通過(guò)它重組,在進(jìn)行比較。4.5.7安裝配置JWT安裝pipinstalldjangorestframework-jwt配置REST_FRAMEWORK={
'DEFAULT_AUTHENTICATION_CLASSES':(
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
importdatetime
JWT_AUTH={
'JWT_EXPIRATION_DELTA':datetime.timedelta(days=1),
}JWT_EXPIRATION_DELTA指明token的有效期生成jwtDjangoRESTframeworkJWT擴(kuò)展的說(shuō)明文檔中提供了手動(dòng)簽發(fā)JWT的方法fromrest_framework_jwt.settingsimportapi_settings
?
jwt_payload_handler=api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler=api_settings.JWT_ENCODE_HANDLER
?
payload=jwt_payload_handler(user)
token=jwt_encode_handler(payload)在用戶注冊(cè)或登錄成功后,在序列化器中返回用戶信息以后同時(shí)返回token即可。4.5.8后端實(shí)現(xiàn)登陸認(rèn)證接口DjangoRESTframeworkJWT提供了登錄獲取token的視圖,可以直接使用在子應(yīng)用路由urls.py中fromrest_framework_jwt.viewsimportobtain_jwt_token
?
urlpatterns=[
path(r'authorizations/',obtain_jwt_token,name='authorizations'),
]在主路由中,引入當(dāng)前子應(yīng)用的路由文件urlpatterns=[
...
path('users/',include("users.urls")),
#include的值必須是模塊名.urls格式,字符串中間只能出現(xiàn)一個(gè)圓點(diǎn)
]接下來(lái),我們可以通過(guò)postman來(lái)測(cè)試下功能4.5.9前端實(shí)現(xiàn)登陸功能在登陸組件中找到登陸按鈕,綁定點(diǎn)擊事件<buttonclass="login_btn"@click="loginhander">登錄</button>在methods中請(qǐng)求后端exportdefault{
name:'Login',
data(){
return{
login_type:0,
remember:false,//記住密碼
username:"",
password:"",
}
},
?
methods:{
//登錄
loginhander(){
this.$axios.post(":8000/users/authorizations/",{"username":this.username,"password":this.password}).then(response=>{
console.log(response.data)
}).catch(error=>{
console.log(error)
})
}
},
?
};4.5.10前端保存jwt我們?cè)谇岸嗽趺窗裈oken進(jìn)行保存呢!其實(shí)由很多種方法可以實(shí)現(xiàn)這個(gè)功能:1可以設(shè)置一個(gè)cookies,我們可以把它保存在cookies中,這樣就可以很方便的解決了問(wèn)題,當(dāng)然為了信息的安全起見(jiàn),我們的瀏覽器本身是可以存儲(chǔ)信息的,瀏覽器為我們提供了兩個(gè)本地存儲(chǔ)的地方:1sessionStorage,2localStorage使用方法那這兩個(gè)的區(qū)別就字面意思,前者只在當(dāng)前會(huì)話有效,后者則是可以長(zhǎng)期的存儲(chǔ)。我們也可以通過(guò)瀏覽器的清除數(shù)據(jù)進(jìn)行管理。sessionStorage.變量名=變量值
//保存數(shù)據(jù)
sessionStorage.變量名
//讀取數(shù)據(jù)
sessionStorage.clear()
//清除所有sessionStorage保存的數(shù)據(jù)
?
localStorage.變量名=變量值
//保存數(shù)據(jù)
localStorage.變量名
//讀取數(shù)據(jù)
localStorage.clear()
//清除所有l(wèi)ocalStorage保存的數(shù)據(jù)登陸組件代碼Login.vue//使用瀏覽器本地存儲(chǔ)保存token
if(this.remember){
//記住登錄
sessionStorage.clear();
localStorage.token=response.data.token;
}else{
//未記住登錄
localStorage.clear();
sessionStorage.token=response.data.token;
}
//頁(yè)面跳轉(zhuǎn)回到上一個(gè)頁(yè)面也可以使用this.$router.push("/")回到首頁(yè)
this.$router.go(-1)默認(rèn)的返回值僅有token,我們還需在返回值中增加username和id,方便在客戶端頁(yè)面中顯示當(dāng)前登陸用戶通過(guò)修改該視圖的返回值可以完成我們的需求。在users/utils.py中,創(chuàng)建defjwt_response_payload_handler(token,user=None,request=None):
"""
自定義jwt認(rèn)證成功返回?cái)?shù)據(jù)
"""
return{
'token':token,
'id':user.id,
'username':user.username
}修改settings.py配置文件#JWT
JWT_AUTH={
'JWT_EXPIRATION_DELTA':datetime.timedelta(days=1),
'JWT_RESPONSE_PAYLOAD_HANDLER':'users.utils.jwt_response_payload_handler',
}登錄組件代碼Login.vue//使用瀏覽器本地存儲(chǔ)保存token
if(this.remember){
//記住登錄
sessionStorage.clear();
localStorage.token=response.data.token;
localStorage.id=response.data.id;
localStorage.username=response.data.username;
}else{
//未記住登錄
localStorage.clear();
sessionStorage.token=response.data.token;
sessionStorage.id=response.data.id;
sessionStorage.username=response.data.username;
}4.5.11多條件登錄JWT擴(kuò)展的登錄視圖,在收到用戶名與密碼時(shí),也是調(diào)用Django的認(rèn)證系統(tǒng)中提供的authenticate()來(lái)檢查用戶名與密碼是否正確。我們可以通過(guò)修改Django認(rèn)證系統(tǒng)的認(rèn)證后端(主要是authenticate方法)來(lái)支持登錄賬號(hào)既可以是用戶名也可以是手機(jī)號(hào)。django.contrib.auth.backends.ModelBackend,并重寫(xiě)authenticate方法。authenticate(self,request,username=None,password=None,**kwargs)方法的參數(shù)說(shuō)明:request本次認(rèn)證的請(qǐng)求對(duì)象username本次認(rèn)證提供的用戶賬號(hào)password本次認(rèn)證提供的密碼根據(jù)username參數(shù)查找用戶User對(duì)象,username參數(shù)可能是用戶名,也可能是手機(jī)號(hào)若查找到User對(duì)象,調(diào)用User對(duì)象的check_password方法檢查密碼是否正確在users/utils.py中編寫(xiě):defget_user_by_account(account):
"""
根據(jù)帳號(hào)獲取user對(duì)象
:paramaccount:賬號(hào),可以是用戶名,也可以是手機(jī)號(hào)
:return:User對(duì)象或者None
"""
try:
ifre.match('^1[3-9]\d{9}$',account):
#帳號(hào)為手機(jī)號(hào)
user=User.objects.get(mobile=account)
else:
#帳號(hào)為用戶名
user=User.objects.get(username=account)
exceptUser.DoesNotExist:
returnNone
else:
returnuser
?
importre
from.modelsimportUser
fromdjango.contrib.auth.backendsimportModelBackend
classUsernameMobileAuthBackend(ModelBackend):
"""
自定義用戶名或手機(jī)號(hào)認(rèn)證
"""
?
defauthenticate(self,request,username=None,password=None,**kwargs):
user=get_user_by_account(username)
ifuserisnotNoneanduser.check_password(password):
returnuser在配置文件settings.py中告知Django使用我們自定義的認(rèn)證后端AUTHENTICATION_BACKENDS=[
'users.utils.UsernameMobileAuthBackend',
]4.6課程列表及課程詳情在實(shí)現(xiàn)課程列表功能時(shí),前端Vue首先注冊(cè)路由,接下來(lái)分析課程列表頁(yè)面中可能出現(xiàn)的數(shù)據(jù)之間的關(guān)系,在后端的開(kāi)發(fā)步驟為,先注冊(cè)課程子應(yīng)用,接下來(lái)創(chuàng)建數(shù)據(jù)表,數(shù)據(jù)遷移到數(shù)據(jù)庫(kù)同步起來(lái),當(dāng)然我們?cè)陂_(kāi)發(fā)的同時(shí)也需要我們先在數(shù)據(jù)庫(kù)里錄入一些數(shù)據(jù)供我們開(kāi)發(fā)及能夠看出實(shí)際效果,在面對(duì)要對(duì)很大的表格錄入數(shù)據(jù)時(shí),我們可以采用使用終端腳本來(lái)執(zhí)行SQL語(yǔ)句文件來(lái)完成對(duì)數(shù)據(jù)的添加,在后臺(tái)站點(diǎn)管理員要對(duì)不同格式的數(shù)據(jù)進(jìn)行比如圖片,視頻文件的上傳及圖片的制作等等功能,我們可以才用富文本編輯器的方法來(lái)實(shí)現(xiàn)。后端實(shí)現(xiàn)課程列表接口可分為4個(gè)步驟:1創(chuàng)建序列化器2創(chuàng)建視圖3注冊(cè)路由4客戶端發(fā)送請(qǐng)求獲取課程分類(lèi)信息。在Postman對(duì)接口進(jìn)行測(cè)試,返回對(duì)的數(shù)據(jù)的話,表明實(shí)現(xiàn)該功能。4.7視頻播放該網(wǎng)站上的視頻可以分成兩大類(lèi)別:1免費(fèi)課的教學(xué)視頻,這個(gè)是不需要加密處理的,2收費(fèi)視頻,需要用戶購(gòu)買(mǎi)了才可以觀看的,這部分視頻我們就要進(jìn)行加密處理了。4.7.1使用保利威云視頻服務(wù)來(lái)對(duì)視頻進(jìn)行加密官方網(wǎng)址:/vod/注意:開(kāi)發(fā)時(shí)通過(guò)免費(fèi)試用注冊(cè)體驗(yàn)版賬號(hào)【賬號(hào)有效期是一周】公司使用酷播尊享版開(kāi)發(fā)文檔地址:/2017/videoproduct/v-playerapi/html5player/html5-docs/要開(kāi)發(fā)播放保利威的加密視頻功能,需要在用戶中心->設(shè)置->API接口和加密設(shè)置./secure/setting/api配置視頻上傳加密.上傳視頻并記錄視頻的VID4.7.2后端獲取保利威的視頻播放授權(quán)token,提供接口api給前端參考文檔:/2019/videoproduct/v-api/v-api-play/create-playsafe-token/根據(jù)官方文檔的案例,已經(jīng)有其他人開(kāi)源了,針對(duì)polvy的token生成的python版本了,我們可以直接拿來(lái)使用.在libs下創(chuàng)建polyv.py,編寫(xiě)token生成工具函數(shù)配置文件settings/dev.py,代碼:#保利威視頻加密服務(wù)
POLYV_CONFIG={
"userId":"62dc475e3f",
"secretkey":"h6FiaEBRMU",
"tokenUrl":"/service/v1/token",
}courses/views.py,視圖代碼:fromluffyapi.libs.polyvimportPolyvPlayer
fromdjango.confimportsettings
fromrest_framework.viewsimportAPIView
fromrest_framework.responseimportResponse
fromrest_framework.permissionsimportIsAuthenticated
classPolyvAPIView(APIView):
permission_classes=[IsAuthenticated]
defget(self,request):
"""獲取保利威云視頻加密播放的token"""
"""接受客戶端的請(qǐng)求參數(shù)"""
vid=request.query_params.get("vid")
#視頻播放ID
remote_addr=request.META.get("REMOTE_ADDR")
#用戶的IP
user_id=request.user.id
#用戶ID
user_name=request.user.username
#用戶名
polyv=PolyvPlayer(
settings.POLYV_CONFIG["userId"],
settings.POLYV_CONFIG["secretkey"],
settings.POLYV_CONFIG["tokenUrl"],
)
?
data=polyv.get_video_token(vid,remote_addr,user_id,user_name)
?
returnResponse(data.get("token"))courses/urls.py,路由代碼:path(r"polyv/token/",views.PolyvAPIView.as_view()),4.7.3客戶端請(qǐng)求token并播放視頻在vue項(xiàng)目的入口文件index.html中加載保利威視頻播放器的js核心類(lèi)庫(kù)<scriptsrc='/script/polyvplayer.min.js'></script>創(chuàng)建視頻播放頁(yè)面的組件Player.vue,代碼:<template>
<divclass="player">
<divid="player"></div>
</div>
</template>
?
<script>
exportdefault{
name:"Player",
data(){
return{
?
}
},
methods:{
?
},
computed:{
}
}
</script>
?
<stylescoped>
</style>前端路由,代碼:
{
name:"Player",
path:"/player",
component:Player,
},引入保利威前端HTML5視頻播放器代碼,Player.vue:<template>
<divclass="player">
<divid="player"></div>
</div>
</template>
?
<script>
exportdefault{
name:"Player",
data(){
return{
?
}
},
methods:{
check_login(){
//檢查當(dāng)前訪問(wèn)者是否登錄了!
lettoken=localStorage.token||sessionStorage.token;
if(!token){
this.$alert("對(duì)不起,您尚未登錄,請(qǐng)登錄以后再進(jìn)行購(gòu)物車(chē)").then(()=>{
this.$router.push("/login/");
});
returnfalse;//阻止代碼往下執(zhí)行
}
returntoken;
},
},
mounted(){
?
//驗(yàn)證用戶是否登錄
lettoken=this.check_login();
letuser_name=localStorage.user_name||sessionStorage.user_name;
let_this=this;
letvid="d6f2d2d505673e0a75cef00f8d5284f6_d";
varplayer=polyvObject('#player').videoPlayer({
wrap:'#player',
width:document.documentElement.clientWidth-260,//頁(yè)面寬度
height:document.documentElement.clientHeight,//頁(yè)面高度
forceH5:true,
vid:vid,
code:user_name,//一般是用戶昵稱(chēng)
//視頻加密播放的配置
playsafe:function(vid,next){//向后端發(fā)送請(qǐng)求獲取加密的token
_this.$axios.get(`${_this.$settings.Host}/courses/polyv/token/`,{
params:{
vid:vid,
},
headers:{
"Authorization":"jwt"+token,
}
}).then(function(response){
console.log(response);
next(response.data.token);
})
?
}
});
},
computed:{
}
?
}
</script>
?
<stylescoped>
</style>
?4.7.4完善課程詳情頁(yè)的視頻內(nèi)容顯示1.課程詳情中有封面視頻播放,所以我們需要在后端的課程模型中新增一個(gè)字段course_video
2.在序列化器中返回的內(nèi)容增加course_video
3.在課程詳情頁(yè)組件中顯示封面視頻或者封面圖片課程詳情中有封面視頻播放,所以我們需要在后端的課程模型中新增一個(gè)字段course_video.5系統(tǒng)測(cè)試5.1測(cè)試目的當(dāng)開(kāi)發(fā)者在開(kāi)發(fā)程序之時(shí),就會(huì)對(duì)相應(yīng)開(kāi)發(fā)的模塊進(jìn)行測(cè)試,確保單獨(dú)模塊運(yùn)行不會(huì)出問(wèn)題,測(cè)試是一個(gè)開(kāi)發(fā)項(xiàng)目必不可少的過(guò)程,是開(kāi)發(fā)程序過(guò)程中同時(shí)進(jìn)行的必不可少的一部分,檢查模塊和模塊之間銜接是否有問(wèn)題。在開(kāi)發(fā)完成時(shí),進(jìn)行最終測(cè)試,測(cè)試整體系統(tǒng)是否有BUG和功能是否符合項(xiàng)目計(jì)劃,減少出錯(cuò)率和后期維修成本。5.2測(cè)試方法靜態(tài)測(cè)試的方法有很多種,包括代碼重新查看、基本邏輯的調(diào)試、代碼的實(shí)用性、接口數(shù)據(jù)測(cè)試等等。建立測(cè)試用例、執(zhí)行代碼和分析程序的輸出結(jié)果。對(duì)于該系統(tǒng)我主要對(duì)前端頁(yè)面的反應(yīng)時(shí)間及畫(huà)面效果進(jìn)行調(diào)試型的測(cè)試,在后端的接口測(cè)試中因?yàn)槊總€(gè)不同的頁(yè)面返回的數(shù)據(jù)都不相同并且每個(gè)數(shù)據(jù)都是直接或間接來(lái)自于數(shù)據(jù)庫(kù),主要的測(cè)試方向就是對(duì)每個(gè)不同頁(yè)面,每個(gè)不同數(shù)據(jù)接口的測(cè)試,在這里我在每完成一個(gè)頁(yè)面后都會(huì)用Postman來(lái)對(duì)接口進(jìn)行測(cè)試。5.3測(cè)試結(jié)果分析經(jīng)過(guò)對(duì)本系統(tǒng)多個(gè)方面進(jìn)行系統(tǒng)性的分析測(cè)試,本系統(tǒng)針對(duì)在線教育而開(kāi)發(fā)的功能已經(jīng)全部實(shí)現(xiàn)并且測(cè)試未發(fā)現(xiàn)異常,全部符合預(yù)期需求,并且操作簡(jiǎn)單、產(chǎn)品性能高效,可推廣使用。6系統(tǒng)特色和創(chuàng)新該系統(tǒng)在Python本身就開(kāi)發(fā)快捷,大多數(shù)的功能依賴(lài)外部的包及第三方的工具,使得我們的開(kāi)發(fā)非??旖?。當(dāng)然在系統(tǒng)的本身實(shí)現(xiàn)的時(shí)候也加入了很多有特色的功能,現(xiàn)有的網(wǎng)絡(luò)技術(shù)在實(shí)際web開(kāi)發(fā)中使用越來(lái)越多。由于現(xiàn)在的網(wǎng)絡(luò)爬蟲(chóng)越來(lái)越多,我們的這個(gè)線上商品大部分是視頻,在登錄界面我通過(guò)實(shí)現(xiàn)了一個(gè)極驗(yàn)驗(yàn)證(滑動(dòng)驗(yàn)證)來(lái)提高我們的網(wǎng)站的一定的安全,用戶注冊(cè)采用了容聯(lián)云的短信認(rèn)證,我們的在線視頻屬于知識(shí)產(chǎn)權(quán),不能讓用戶直接下載和保存到本地,這里我采用了保利威的視頻加密技術(shù)實(shí)現(xiàn)視頻的加密,對(duì)于短信的驗(yàn)證碼和后面的訂單的勾選狀態(tài)我這里采用了radis,加快對(duì)數(shù)據(jù)的存取。在發(fā)短息功能上,由于它是有時(shí)間間隔的我這里采用了celery隊(duì)列技術(shù),防止服務(wù)器出現(xiàn)停頓現(xiàn)象,在對(duì)訂單的過(guò)期處理這里我哦通過(guò)定制定時(shí)任務(wù),每天的0:00通過(guò)celery隊(duì)列把過(guò)期的訂單狀態(tài)改為已過(guò)期。并支持多種瀏覽器模式。比如在xadmin系統(tǒng)的后臺(tái)站點(diǎn),在面對(duì)要錄入比較多字段跟,既要上傳文件,視頻,圖片,甚至要繪制簡(jiǎn)單的圖型效果時(shí),我引入了第三方模塊:富文本編輯器。大大提高了系統(tǒng)的使用性。7結(jié)論此次的畢業(yè)設(shè)計(jì)讓我把在學(xué)校這四年學(xué)習(xí)到的知識(shí)全部的應(yīng)用上了一遍,即溫故了之前學(xué)習(xí)過(guò)的理論知識(shí)、數(shù)據(jù)庫(kù)的知識(shí)、學(xué)習(xí)過(guò)的Python的知識(shí)。有在完成這次的設(shè)計(jì)學(xué)習(xí)了很多前端,web端的知識(shí)。對(duì)Python的興趣這樣的語(yǔ)言更加的熟練的同時(shí),更加喜歡上它,在這期間我讀了好幾本Python相關(guān)的書(shū)籍,豐富了自己。當(dāng)然在這個(gè)從無(wú)到有的過(guò)程總是有點(diǎn)辛苦的,經(jīng)歷了這個(gè)即漫長(zhǎng)又短暫的過(guò)程,本人的心里及生活的態(tài)度更加積極了。記不下來(lái),很多方法都要從網(wǎng)上視頻進(jìn)行一步一步學(xué)習(xí)。經(jīng)過(guò)這次挑戰(zhàn),我成功克服了各種困難,實(shí)現(xiàn)了我獨(dú)立開(kāi)發(fā)的網(wǎng)站,感受到了獨(dú)立開(kāi)發(fā)者的各種艱辛,也明白自己的不足之處,軟件領(lǐng)域的知識(shí)需要用一輩子慢慢去學(xué)習(xí)和積累,與時(shí)俱進(jìn)方不會(huì)被未來(lái)淘汰。一定要保持一顆熱愛(ài)學(xué)習(xí),超越時(shí)代發(fā)展的心和雄心。參考文獻(xiàn)[1]埃里克·馬瑟斯(EricMatthes).Python編程從入門(mén)到實(shí)踐[D].北京:人民郵電出版社,2016-07-01.[2]明日科技.Python從入門(mén)到項(xiàng)目實(shí)踐[D].吉林:吉林jinling大學(xué)出版社,2018-08-01.[3]明日科技.Python項(xiàng)目開(kāi)發(fā)案例集錦[D].吉林:吉林大學(xué)出版社,2019-03-01.[4]王巍巍.笨辦法學(xué)Python3[D].北京:人民郵電出版社,2018-06-01.[5]袁國(guó)忠.Python基礎(chǔ)教程第3版Python簡(jiǎn)明教程書(shū)籍Python編程從入門(mén)到實(shí)踐靈程序設(shè)計(jì)叢書(shū)[D].北京:人民郵電出版社,2018-02-01.[6]李軍.數(shù)據(jù)結(jié)構(gòu)Python語(yǔ)言描述[D].北京:人民郵電出版社,2017-12-01.[7]Vamei.從Python開(kāi)始學(xué)編程[D].上海:電子工業(yè)出版社,2017-01-01.[8]陶俊杰,陳小莉.Python數(shù)據(jù)科學(xué)手冊(cè)[D].北京:人民郵電出版社,2018-02-01.[9]愛(ài)飛翔.EffectivePython:編寫(xiě)高質(zhì)量Python代碼的59個(gè)有效方法[D].廣州:機(jī)械工業(yè)出版社,2016-01-01.[10]張心韜,蘭亮.Python面向?qū)ο缶幊讨改蟍D].北京:人民郵電出版社,2016-03-01.[11]美]施瓦茨,[美]扎伊采夫,[美]特卡琴科.高性能MYSQL(第3版)[D].北京:電子工業(yè)出版社,2013-05-01.[12]劉曉霞,鐘鳴.MySQL必知必會(huì)[MySQLCrashCourse][D].北京:人民郵電出版社,2009-01-01.[13]明日科技.MySQL從入門(mén)到精通(配光盤(pán))(軟件開(kāi)發(fā)視頻大講堂)[D].北京:清華大學(xué)出版社,2017-08-01.[14]姜承堯.MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎(第2版)[D].北京:機(jī)械工業(yè)出版社,2013-06-01.[15]李丙洋.涂抹MySQL:跟著三思一步一步學(xué)MySQL[D].北京:中國(guó)水利水電出版社,2014-05-01.[16]錢(qián)文品.Redis深度歷險(xiǎn):核心原理與應(yīng)用實(shí)踐[D].深圳:電子工業(yè)出版社,2019-01-01.[17][美]約西亞L.卡爾森(Josiah,L.,Carlson)著.Redis實(shí)戰(zhàn)[D].北京:人民郵電出版社,2015-11-01.[18]黃健宏.Redis使用手冊(cè)[D].深圳:機(jī)械工業(yè)出版社,2019-10-01.[19]陳雷.Redis5設(shè)計(jì)與源碼分析[D].深圳:機(jī)械工業(yè)出版社,2019-08-01.[20]尼恩.Netty、Redis、Zookeeper高并發(fā)實(shí)戰(zhàn)[D].深圳:機(jī)械工業(yè)出版社,2019-08-01.致謝在東軟的四年學(xué)習(xí)中,各個(gè)任課老師和教授孜孜不倦的教誨對(duì)我的學(xué)習(xí)生涯有這重大的影響。同時(shí)能對(duì)我在以后的工作生活中讓我獲益匪淺。感謝楊利院長(zhǎng)和各位教職工四年了為我創(chuàng)造的良好學(xué)習(xí)環(huán)境。前人的披荊斬棘所留下的知識(shí)財(cái)富寶藏造福了我們這些后生。萬(wàn)分感謝他們的奉獻(xiàn)。此外十分指導(dǎo)老師的論文批改工作,不僅在畢業(yè)設(shè)計(jì)上對(duì)我的指導(dǎo)非常重要,更對(duì)我的論文進(jìn)行了增刪減改,在即將畢業(yè)時(shí)刻,老師的付出是非常多的。感謝我的學(xué)校為我們提供了一個(gè)學(xué)習(xí)場(chǎng)所和濃郁的計(jì)算機(jī)學(xué)習(xí)氛圍,這次過(guò)程中,我知道知識(shí)的海洋真的很大,我能夠做的就是不斷往前!最后感謝在大學(xué)四年里,身邊所有人付出的一切。
電腦不啟動(dòng)故障診治了解電腦啟動(dòng)的過(guò)程在諸多電腦故障中,無(wú)法正常啟動(dòng)是最令用戶頭痛的事了。筆者長(zhǎng)期從事維護(hù)電腦的工作,在這個(gè)方面積累了一些經(jīng)驗(yàn),現(xiàn)在就將這些經(jīng)驗(yàn)整理歸納出來(lái)與朋友們分享。本文將以家用電腦和windows98操作系統(tǒng)為基礎(chǔ),介紹電腦無(wú)法正常啟動(dòng)故障的診治。要想準(zhǔn)確地診斷電腦不啟動(dòng)故障,首先要了解的起動(dòng)過(guò)程,當(dāng)我們按下電源開(kāi)關(guān)時(shí),電源就開(kāi)始向主板和其它設(shè)備供電,此時(shí)電壓還沒(méi)有完全穩(wěn)定,主板控制芯片組會(huì)根據(jù)CMOS中的CPU主頻設(shè)置向CPU發(fā)出一個(gè)Reset(重置)信號(hào),讓CPU初始化,電壓完全穩(wěn)定后,芯片組會(huì)撤去Reset信號(hào),CPU馬上從地址FFFF0H處執(zhí)行一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代碼處。系統(tǒng)BIOS首先要做的事情就是進(jìn)行POST(PowerOnSelfTest,加電自檢)。POST的主要任務(wù)是檢測(cè)系統(tǒng)中的一些關(guān)鍵設(shè)備(電源、CPU芯片、BIOS芯片、定時(shí)器芯片、數(shù)據(jù)收發(fā)邏輯電路、DMA控制器、中斷控制器以及基本的64K內(nèi)存和內(nèi)存刷新電路等)是否存在和能否正常工作,如內(nèi)存和顯卡等。自檢通過(guò)后,系統(tǒng)BIOS將查找顯示卡的BIOS,由顯卡BIOS來(lái)完成顯示卡的初始化,顯示器開(kāi)始有顯示,自此,系統(tǒng)就具備了最基本的運(yùn)行條件,可以對(duì)主板上的其它部分進(jìn)行診斷和測(cè)試,再發(fā)現(xiàn)故障時(shí),屏幕上會(huì)有提示,但一般不死機(jī),接著系統(tǒng)BIOS將檢測(cè)CPU的類(lèi)型和工作頻率,然后開(kāi)始測(cè)試主機(jī)所有的內(nèi)存容量,內(nèi)存測(cè)試通過(guò)之后,系統(tǒng)BIOS將開(kāi)始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,這些設(shè)備包括:硬盤(pán)、CD-ROM、軟驅(qū)、串行接口和并行接口等連接的設(shè)備,大多數(shù)新版本的系統(tǒng)BIOS在這一過(guò)程中還要自動(dòng)檢測(cè)和設(shè)置內(nèi)存的相關(guān)參數(shù)、硬盤(pán)參數(shù)和訪問(wèn)模式等。標(biāo)準(zhǔn)設(shè)備檢測(cè)完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開(kāi)始檢測(cè)和配置系統(tǒng)中已安裝的即插即用設(shè)備。每找到一個(gè)設(shè)備之后,系統(tǒng)BIOS都會(huì)在屏幕上顯示出設(shè)備的名稱(chēng)和型號(hào)等信息,同時(shí)為該設(shè)備分配中斷、DMA通道和I/O端口等資源。最后系統(tǒng)BIOS將更新ESCD(ExtendedSystemConfigurationData,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD數(shù)據(jù)更新完畢后,系統(tǒng)BIOS的啟動(dòng)代碼將進(jìn)行它的最后一項(xiàng)工作,即根據(jù)用戶指定的啟動(dòng)順序從軟盤(pán)、硬盤(pán)或光驅(qū)啟動(dòng)。以從C盤(pán)啟動(dòng)為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤(pán)上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個(gè)活動(dòng)分區(qū),然后讀取并執(zhí)行這個(gè)活動(dòng)分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負(fù)責(zé)讀取并執(zhí)行IO.SYS,這是Windows最基本的系統(tǒng)文件。IO.SYS首先要初始化一些重要的系統(tǒng)數(shù)據(jù),然后就顯示出我們熟悉的藍(lán)天白云,在這幅畫(huà)面之下,Windows將繼續(xù)進(jìn)行DOS部分和GUI(圖形用戶界面)部分的引導(dǎo)和初始化工作,一切順利結(jié)束,電腦正常啟動(dòng)。根據(jù)故障現(xiàn)象診治了解電腦啟動(dòng)的過(guò)程,故障就好判斷了,下面我們就根據(jù)故障現(xiàn)象開(kāi)始診治了:現(xiàn)象一:系統(tǒng)完全不能啟動(dòng),見(jiàn)不到電源指示燈亮,也聽(tīng)不到冷卻風(fēng)扇的聲音。這時(shí),基本可以認(rèn)定是電源部分故障,檢查:電源線和插座是否有電、主板電源插頭是否連好,UPS是否正常供電,再確認(rèn)電源是否有故障,最簡(jiǎn)單的就是替換法,但一般用戶家中不可能備有電源等備件,這時(shí)可以嘗試使用下面的方法(注意:要慎重):先把硬盤(pán),CPU風(fēng)扇,或者CDROM連好,然后把ATX主板電源插頭用一根導(dǎo)線連接兩個(gè)插腳(把插頭的一側(cè)突起對(duì)著自己,上層插腳從左數(shù)第4個(gè)和下層插腳從右數(shù)第3個(gè),方向一定要正確),然后把ATX電源的開(kāi)關(guān)打開(kāi),如果電源風(fēng)扇轉(zhuǎn)動(dòng),說(shuō)明電源正常,否則電源損壞。如果電源沒(méi)問(wèn)題直接短接主板上電源開(kāi)關(guān)的跳線,如果正常,說(shuō)明機(jī)箱面板的電源開(kāi)關(guān)損壞?,F(xiàn)象二:電源批示燈亮,風(fēng)扇轉(zhuǎn),但沒(méi)有明顯的系統(tǒng)動(dòng)作。這種情況如果出現(xiàn)在新組裝電腦上應(yīng)該首先檢查CPU是否插牢或更換CPU,而正在使用的電腦的CPU損壞的情況比較少見(jiàn)(人為損壞除外),損壞時(shí)一般多帶有焦糊味,如果剛剛升級(jí)了BIOS或者遭遇了CIH病毒攻擊,這要考慮BIOS損壞問(wèn)題(BIOS莫名其妙的損壞也是有的),修復(fù)BIOS的方法很多雜志都介紹過(guò)就不重復(fù)了;確認(rèn)CPU和BIOS沒(méi)問(wèn)題后,就要考慮CMOS設(shè)置問(wèn)題,如果CPU主頻設(shè)置不正確也會(huì)出現(xiàn)這種故障,解決方法就是將CMOS信息清除,既要將CMOS放電,一般主板上都有一個(gè)CMOS放電的跳線,如果找不到這個(gè)跳線可以將CMOS電池取下來(lái),放電時(shí)間不要低于5分鐘,然后將跳線恢復(fù)原狀或重新安裝好電池即可;如果CPU、BIOS和CMOS都沒(méi)問(wèn)題還要考慮電源問(wèn)題:PC機(jī)電源有一個(gè)特殊的輸出信號(hào),稱(chēng)為POWERGOOD(PG)信號(hào),如果PG信號(hào)的低電平持續(xù)時(shí)間不夠或沒(méi)有低電平時(shí)間,PC機(jī)將無(wú)法啟動(dòng)。如果PG信號(hào)一直為低電平,則PC機(jī)系統(tǒng)始終處于復(fù)位狀態(tài)。這時(shí)PC機(jī)也出現(xiàn)黑屏、無(wú)聲響等死機(jī)現(xiàn)象。但這需要專(zhuān)業(yè)的維修工具外加一些維修經(jīng)驗(yàn),因此,建議采用替換法;電源沒(méi)有問(wèn)題就要檢查是否有短路,確保主板表面不和金屬(特別是機(jī)箱的安裝固定點(diǎn))接觸。把主板和電源拿出機(jī)箱,放在絕緣體表面,如果能啟動(dòng),說(shuō)明主板有短路現(xiàn)象;如果還是不能啟動(dòng)則要考慮主板問(wèn)題,主板故障較為復(fù)雜,可以使用替換法確認(rèn),然后更換主板?,F(xiàn)象三:電源指示燈亮,系統(tǒng)能啟動(dòng),但系統(tǒng)在初始化時(shí)停住了,而且可以聽(tīng)到嗽叭的鳴叫聲(沒(méi)有視頻):根據(jù)峰鳴代碼可以判斷出故障的部位。ccid_page/AwardBIOS1短聲:說(shuō)明系統(tǒng)正常啟動(dòng)。表明機(jī)器沒(méi)有問(wèn)題。2短聲:說(shuō)明CMOS設(shè)置錯(cuò)誤,重新設(shè)置不正確選項(xiàng)。1長(zhǎng)1短:說(shuō)明內(nèi)存或主板出錯(cuò),換一個(gè)內(nèi)存條試試。1長(zhǎng)2短:說(shuō)明顯示器或顯示卡存在錯(cuò)誤。檢查顯卡和顯示器插頭等部位是否接觸良好或用替換法確定顯卡和顯示器是否損壞。1長(zhǎng)3短:說(shuō)明鍵盤(pán)控制器錯(cuò)誤,應(yīng)檢查主板。1長(zhǎng)9短:說(shuō)明主板FlashRAM、EPROM錯(cuò)誤或BIOS損壞,更換FlashRAM。重復(fù)短響:說(shuō)明主板電源有問(wèn)題。不間斷的長(zhǎng)聲:說(shuō)明系統(tǒng)檢測(cè)到內(nèi)存條有問(wèn)題,重新安裝內(nèi)存條或更換新內(nèi)存條重試。AMIBIOS1短:說(shuō)明內(nèi)存刷新失敗。更換內(nèi)存條。2短:說(shuō)明內(nèi)存ECC較驗(yàn)錯(cuò)誤。在CMOS中將內(nèi)存ECC校驗(yàn)的選項(xiàng)設(shè)為Disabled或更換內(nèi)存。3短:說(shuō)明系統(tǒng)基本內(nèi)存檢查失敗。換內(nèi)存。4短:說(shuō)明系統(tǒng)時(shí)鐘出錯(cuò)。更換芯片或CMOS電池。5短:說(shuō)明CPU出現(xiàn)錯(cuò)誤。檢查CPU是否插好。6短:說(shuō)明鍵盤(pán)控制器錯(cuò)誤。應(yīng)檢查主板。7短:說(shuō)明系統(tǒng)實(shí)模式錯(cuò)誤,不能切換到保護(hù)模式。8短:說(shuō)明顯示內(nèi)存錯(cuò)誤。顯示內(nèi)存有問(wèn)題,更換顯卡試試。9短:說(shuō)明BIOS芯片檢驗(yàn)和錯(cuò)誤。1長(zhǎng)3短:說(shuō)明內(nèi)存錯(cuò)誤。內(nèi)存損壞,更換。1長(zhǎng)8短:說(shuō)明顯示測(cè)試錯(cuò)誤。顯示器數(shù)據(jù)線沒(méi)插好或顯示卡沒(méi)插牢。現(xiàn)象四:系統(tǒng)能啟動(dòng),有視頻,出現(xiàn)故障提示,這時(shí)可以根據(jù)提示來(lái)判斷故障部位。下面就是一些常見(jiàn)的故障提示的判斷:一、提示“CMOSBatteryStateLow”原因:CMOS參數(shù)丟失,有時(shí)可以啟動(dòng),使用一段時(shí)間后死機(jī),這種現(xiàn)象大多是CMOS供電不足引起的。對(duì)于不同的CMOS供電方式,采取不同的措施:1.焊接式電池:用電烙鐵重新焊上一顆新電池即可;2.鈕扣式電池:直接更換;3.芯片式:更換此芯片,最好采用相同型號(hào)芯片替換。如果更換電池后時(shí)間不長(zhǎng)又出現(xiàn)同樣現(xiàn)象的話,很可能是主板漏電,可檢查主板上的二極管或電容是否損壞,也可以跳線使用外接電池,不過(guò)這些都需要有一定的硬件維修基礎(chǔ)才能完成。二、提示“CMOSChecksumFailure”CMOS中的BIOS檢驗(yàn)和讀出錯(cuò);提示“CMOSSystemOptionNotSet”,CMOS系統(tǒng)未設(shè)置;提示“CMOSDisplayTypeMismatch”,CMOS中顯示類(lèi)型的設(shè)置與實(shí)測(cè)不一致;提示“CMOSMemorySizeMismatch”,主板上的主存儲(chǔ)器與CMOS中設(shè)置的不一樣;提示“CMOSTime&DateNotSet”,CMOS中的時(shí)間和日期沒(méi)有設(shè)置。這些都需要對(duì)CMOS重新設(shè)置。三、提示“KeyboardInterfaceError”后死機(jī)原因:主板上鍵盤(pán)接口不能使用,拔下鍵盤(pán),重新插入后又能正常啟動(dòng)系統(tǒng),使用一段時(shí)間后鍵盤(pán)無(wú)反應(yīng),這種現(xiàn)象主要是多次拔插鍵盤(pán)引起主板鍵盤(pán)接口松動(dòng),拆下主板用電烙鐵重新焊接好即可;也可能是帶電拔插鍵盤(pán),引起主板上一個(gè)保險(xiǎn)電阻斷了(在主板上標(biāo)記為Fn的東西),換上一個(gè)1歐姆/0.5瓦的電阻即可。四、自檢過(guò)程中斷在xxxKCache處這表示主板上Cache損壞,可以在CMOS設(shè)置中將“ExternalCache”項(xiàng)設(shè)為“Disable”故障即可排除。同理,在自檢主板部件時(shí)出現(xiàn)中斷,則可以認(rèn)為該部件損壞,解決方法一般可以在CMOS中將其屏蔽,如果不能屏蔽該部件最好更換主板。五、提示“FDDControllerFailure”BIOS不能與軟盤(pán)驅(qū)動(dòng)器交換信息;提示“HDDControllerFailure”,BIOS不能與硬盤(pán)驅(qū)動(dòng)器交換信息。應(yīng)檢查FDD(HDD)控制卡及電纜。六、提示“8042GateA20Error”8042芯片壞;提示“DMAError”,DMA控制器壞。這種故障需要更換。七、提示“DisplaySwitchNotProper”主板上的顯示模式跳線設(shè)置錯(cuò)誤,重新跳線。八、提示“KeyboardisLock...Unlockit”鍵盤(pán)被鎖住,打開(kāi)鎖后重新引導(dǎo)系統(tǒng)。九、IDE接口設(shè)備檢測(cè)信息為:“DetectingPrimary(或Secondary)Master(或Slave)...None”表示該IDE接口都沒(méi)有找到硬盤(pán),如果該IDE口確實(shí)接有硬盤(pán)的話,則說(shuō)明硬盤(pán)沒(méi)接上或硬盤(pán)有故障,可以從以下幾方面檢查:1、硬盤(pán)電源線和數(shù)據(jù)線是否接觸不良,或換一根線試試;2、CMOS設(shè)置有無(wú)錯(cuò)誤,進(jìn)入CMOS將“PrimaryMaster”、“PrimarySlave”、“SecondaryMaster”三項(xiàng)的的“TYPE”都設(shè)置成“Auto”;3、替換法確認(rèn)硬盤(pán)本身有故障。十、IDE接口設(shè)備檢測(cè)信息下面顯示“Floppydisk(s)fail(40)”出錯(cuò)信息表示CMOS所指定的軟盤(pán)驅(qū)動(dòng)器有問(wèn)題。判斷和解決的方法與硬盤(pán)相似?,F(xiàn)象五:系統(tǒng)不能引導(dǎo)。這種故障一般都不是嚴(yán)重問(wèn)題,只是系統(tǒng)在找到的用于引導(dǎo)的驅(qū)動(dòng)器中找不到引導(dǎo)文件,比如:BIOS的引導(dǎo)驅(qū)動(dòng)器設(shè)置中將軟驅(qū)排在了硬盤(pán)驅(qū)動(dòng)的前面,而軟驅(qū)中又放有沒(méi)有引導(dǎo)系統(tǒng)的軟盤(pán)或者BIOS的引導(dǎo)驅(qū)動(dòng)器設(shè)置中將光驅(qū)排在了硬盤(pán)驅(qū)動(dòng)的前面,而光驅(qū)中又放有沒(méi)有引導(dǎo)系統(tǒng)的光盤(pán),這個(gè)都很簡(jiǎn)單,將光盤(pán)或軟盤(pán)取出就可以了,實(shí)際應(yīng)用中遇到“DiskBootFailure,InsertSystemDiskAndPressEnter”的提示,多數(shù)都是這個(gè)原因。如果是硬盤(pán)不能引
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 金色的魚(yú)鉤教案范文10篇
- 半年個(gè)人工作計(jì)劃
- 元宵大班教案
- 2021北師大版三年級(jí)數(shù)學(xué)下冊(cè)教案設(shè)計(jì)
- 四年級(jí)上冊(cè)語(yǔ)文教學(xué)計(jì)劃4篇
- 等待高中作文(集錦15篇)
- 幼兒園畢業(yè)實(shí)習(xí)報(bào)告3篇
- 在外貿(mào)公司實(shí)習(xí)報(bào)告集合8篇
- 上半年道路交通安全工作總結(jié)
- 天宮課堂第三課300字作文10篇參考
- 廣東省珠海市2023-2024學(xué)年高二上學(xué)期語(yǔ)文期中試卷(含答案)
- 山東省淄博市周村區(qū)(五四制)2023-2024學(xué)年七年級(jí)上學(xué)期期末考試英語(yǔ)試題(含答案無(wú)聽(tīng)力原文及音頻)
- GB/T 44317-2024熱塑性塑料內(nèi)襯油管
- 七年級(jí)道德與法治期末復(fù)習(xí)計(jì)劃范文兩篇
- 酒店英語(yǔ)會(huì)話(第六版)教案全套 李永生 unit 1 Room Reservations -Unit 15 Handling Problems and Complaints
- 創(chuàng)傷失血性休克中國(guó)急診專(zhuān)家共識(shí)2023解讀課件
- 大學(xué)英語(yǔ)智慧樹(shù)知到期末考試答案章節(jié)答案2024年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院
- 執(zhí)行力神經(jīng)機(jī)制與腦成像研究
- 冷鏈物流高質(zhì)量發(fā)展“十四五”規(guī)劃
- 2024年新疆烏魯木齊市選調(diào)生考試(公共基礎(chǔ)知識(shí))綜合能力題庫(kù)完美版
- 2024年中荊投資控股集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
評(píng)論
0/150
提交評(píng)論