華厚強,康佳春
(中國民用航空飛行學(xué)院航空電子電氣學(xué)院,廣漢 618307)
自發(fā)現(xiàn)新型冠狀病毒感染病例以來,新冠病毒已發(fā)生多種變異,傳播速度快,感染范圍廣,防控難度大。迄今為止,新冠肺炎疫情已在全球多點、多輪暴發(fā)并快速蔓延,令世界公共衛(wèi)生安全面臨極大挑戰(zhàn)。近兩年來,國內(nèi)也發(fā)生了多波新冠疫情,黨領(lǐng)導(dǎo)人民采取最全面、最嚴格、最徹底的防控舉措,眾志成城,抗擊疫情成績斐然。在新冠疫情的散發(fā)期間,根據(jù)疫情防控需要,諸多學(xué)校采取封閉式管理,確保學(xué)生在校園環(huán)境處于可控安全的前提下,正常進行教學(xué)。疫情嚴重時,學(xué)校采取線上教學(xué)的方式,畢業(yè)生甚至需要進行線上答辯和線上辦理畢業(yè)離校手續(xù),以減少不必要的外出和社交。
在因新冠疫情而采取的校園封閉式管理的情況下,很多學(xué)生尤其是無法返校的畢業(yè)生宿舍物品大量堆積。為了減少個人物品的堆積和不必要的浪費,急需設(shè)計一個校園交易平臺,以便將在隔離在家、隔離在校的學(xué)生和校友聯(lián)系起來,高效地交易閑置物品,互通有無。通過校園交易平臺,學(xué)生可以高效地上傳自己不需要的閑置物品,以學(xué)生會為中間人,保證物品完好無損,再統(tǒng)一發(fā)布到網(wǎng)上平臺,通過商品界面來點對點地讓學(xué)生在網(wǎng)上進行物品交易和買賣,從而解決了物品不必要的浪費。
本文基于Python語言、Django Web框架和MySQL數(shù)據(jù)庫三個要素,設(shè)計出在局域網(wǎng)內(nèi)本地服務(wù)器上的校園交易網(wǎng)站平臺。
Java語言是一套規(guī)范性很強的設(shè)計語言,適合團隊項目開發(fā),在大型的軟件工程項目上確實需要高度規(guī)范化,Java語言具有難以比擬的優(yōu)勢。但同時Java語言也有不足之處,遇到需要頻繁變更程序的項目,大量的修補與更改容易破壞原本的架構(gòu),帶來不必要的bug以及維修成本。使用Java制作的程序項目一般復(fù)雜度高,且需要高穩(wěn)定度,Java大工作量的項目開發(fā)工序其實與個人小項目開發(fā)是不相符的。如果要做一個團隊工作的項目,且完工后不再需要大量的修改,Java就是理想的編程語言。反之,如果以個人為開發(fā)單位,且項目需要頻繁變更程序,要快速高效地開發(fā),Java并不是明智的選擇。
Python是一種面向?qū)ο蟮慕忉屝汀討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言,是在多種語言基礎(chǔ)上開發(fā)而來,有“膠水語言”的別稱,具有標準強大的數(shù)據(jù)庫,具有可拓展、可嵌入等優(yōu)勢。由于具有較強的交互性和可讀性,初學(xué)者也易于掌握Python語言。隨著技術(shù)水平和計算機性能的不斷提升,Python作為高級語言的響應(yīng)短板在不斷減小,而其因具有代碼量小、易于變更的優(yōu)勢使快速開發(fā)軟件不再成為挑戰(zhàn)。
Python的Web開發(fā)由于Django框架的強大功能,重心其實更多放在對html文件和數(shù)據(jù)庫的編程適配。只要求Web開發(fā)者實現(xiàn)一個函數(shù),就可以響應(yīng)HTTP請求。應(yīng)用Python腳本語言在實現(xiàn)Web開發(fā)中會感到格外順手和便捷。校園交易平臺是一個需要頻繁上下架物品和學(xué)生溝通的平臺,程序和數(shù)據(jù)庫的變更會比較頻繁。因此,選用Python作為校園交易平臺的設(shè)計語言是個合適的方案。
主流的Web框架常使用Flask和Django這兩個Web框架服務(wù)。Flask是用Python語言寫成的輕量級Web框架,最顯著的特點是“微”框架結(jié)構(gòu),輕便靈活、易于擴展。使用Flask框架時,可省略許多需要單獨設(shè)置的步驟。例如,它沒有開箱即用的數(shù)據(jù)層或ORM,也沒有類似表單驗證的規(guī)定。使用Django框架時,部署速度快,數(shù)據(jù)庫以模型層來實現(xiàn)與實際數(shù)據(jù)庫做數(shù)據(jù)的交換。Django是“大而全”的重量級Web框架,自帶常用工具、組件和管理后臺,適合快速開發(fā)功能完善的企業(yè)級網(wǎng)站。Django自帶免費的數(shù)據(jù)SQLite,同時支持MySQL與PostgreSQL等諸多數(shù)據(jù)庫??紤]到校園交易平臺包含商品上架、評論、收藏和交易等功能,是一個較復(fù)雜的網(wǎng)站,綜合考慮Django更適合校園交易平臺這樣的網(wǎng)站開發(fā)。
前端框架指用于簡化網(wǎng)頁設(shè)計的前端開發(fā)套件框架,如jquery、layui和bootstrap等。開發(fā)Web產(chǎn)品時,使用前端框架可以實現(xiàn)界面直觀,易于操作。Django自帶基礎(chǔ)的前端框架模板,但Django前端界面比較簡單,頂部、展示頁面和底部三段式的布局無法用來進行復(fù)雜的操作和編寫,使得界面更加美觀。由于缺乏JavaScript的使用,它只能用來做基礎(chǔ)的靜態(tài)網(wǎng)頁,沒辦法使網(wǎng)頁生動起來。如果網(wǎng)頁的編寫重心在后端,并且前端使用靜態(tài)網(wǎng)頁面板就可以實現(xiàn)目的,那么使用Django自帶的前端模版確實是一個省時省力的操作。相反,如果網(wǎng)頁編程時重心在前端的網(wǎng)頁美化和動態(tài)設(shè)計,那么Django提供的模版就遠遠不夠。
第三方前端框架是目前的主流方向。隨著鑒賞水平的提高,人們對前端網(wǎng)頁的界面美觀度要求越來越高。網(wǎng)頁設(shè)計由原來的前后端不分離,變成了目前主流的前后端分離,前端工程師通過接口和數(shù)據(jù)庫來修改前端的網(wǎng)頁展示界面,方便后端工程師對數(shù)據(jù)庫的處理和數(shù)據(jù)接口的對接。目前主流的前端框架通常采用bootstrap和layui,它們編譯高效,可讀性強,還可提供海量的教學(xué)案例和前端模版,開源免費,社區(qū)里新代碼更新上傳速度快。
本設(shè)計使用bootstrap中經(jīng)典的Django模版來作為前端的框架,用layui模版作為后端管理平臺的修飾,并在此基礎(chǔ)上修改成自己的網(wǎng)頁風(fēng)格,在簡潔美觀的同時充分展現(xiàn)校園交易平臺的基礎(chǔ)功能。
計算機處理信息的過程中,經(jīng)常需要保存或處理大量數(shù)據(jù),這時就需要數(shù)據(jù)庫來存儲和管理這些數(shù)據(jù)。數(shù)據(jù)庫可以通過特定的方法管理和調(diào)用存放在數(shù)據(jù)庫里的數(shù)據(jù),包含數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫管理軟件,主要用來實現(xiàn)對數(shù)據(jù)的新增、查找、更新、刪除等操作。數(shù)據(jù)庫就像倉儲物流一樣,區(qū)別只是存放的東西不同。兩種經(jīng)典且主流的數(shù)據(jù)庫是非關(guān)系數(shù)據(jù)庫NoSQL和關(guān)系數(shù)據(jù)庫MySQL。
使用NoSQL數(shù)據(jù)庫時數(shù)據(jù)通常是存放在內(nèi)存中,讀取速度非???,可以滿足高響應(yīng)的要求,是Java互聯(lián)網(wǎng)系統(tǒng)的利器。NoSQL數(shù)據(jù)庫的優(yōu)勢在于它是開源軟件,可降低運營和維護成本。但它不支持SQL服務(wù)器,所以也不支持表單。MySQL數(shù)據(jù)庫憑借安全性、高效性、對多語言的兼容性、緊密性而得到廣大編程者的青睞。它體積小,維護運營數(shù)據(jù)庫的成本相對低廉,但擁有多種數(shù)據(jù)庫存儲引擎,帶有強大的內(nèi)置函數(shù)。它具有開放源碼的特點,方便數(shù)量龐大的中小型網(wǎng)站開發(fā)者選擇使用MySQL數(shù)據(jù)庫。用戶可以直接在官方網(wǎng)站下載免費的數(shù)據(jù)庫進行安裝和部署,不必支付額外的費用。
NoSQL主要用于大型網(wǎng)站的數(shù)據(jù)管理,具有高響應(yīng)、低延遲的特性,擁有優(yōu)秀的可拓展性,適合專業(yè)程序員對數(shù)據(jù)庫進行個性化編譯和管理;而MySQL數(shù)據(jù)庫不需要使用者對當前環(huán)境進行調(diào)配,即可應(yīng)對各種平臺和編寫程序的考驗??紤]到校園交易平臺并不需要十分苛刻的高響應(yīng)和低延遲特性,加上初學(xué)者對數(shù)據(jù)庫的了解程度遠沒有達到自行編譯管理的程度,本設(shè)計最終選擇使用更具通用性和便利性的MySQL數(shù)據(jù)庫。
本設(shè)計基于Python的校園交易平臺主要由校園交易平臺管理和學(xué)生購買兩部分組成。在校園交易平臺管理部分,可由學(xué)校相關(guān)機構(gòu),比如學(xué)生會統(tǒng)一收集同學(xué)們需要交易的物品,估算價值,并統(tǒng)一由學(xué)校交易機構(gòu)上傳商品。校園交易平臺管理系統(tǒng)包括前端展示頁面、后臺管理模塊、商品上傳、物品分類等必需模塊。在學(xué)生購買部分,允許學(xué)生通過自己的郵箱賬號注冊和登陸校園交易平臺,搜索并購買自己需要的商品,購買后進行評論,因此這部分的用戶注冊與登陸模塊、商品搜索模塊、下單模塊和評論模塊等都是必需模塊。通過校園交易平臺管理部分和學(xué)生購買部分的設(shè)計,使網(wǎng)站擁有前后端功能,可實現(xiàn)校園交易平臺基本的網(wǎng)站電商功能。
一個完整的Django項目通常需要劃分出很多不同的子模塊進行設(shè)計,采用模塊設(shè)計可以使得分工更加明確,提高平臺設(shè)計的效率,減少報錯時搜索修改關(guān)鍵代碼的難度。建設(shè)Django項目首先需要搭建好基于Python的項目開發(fā)環(huán)境,同時使用自帶Django框架易用性極高的PyCharm集成開發(fā)工具進行項目設(shè)計,可以便捷地管理整個項目。在創(chuàng)建項目之前,需要進行模塊的分類。
校園交易平臺除了一開始展現(xiàn)首頁外,第二個展現(xiàn)的就是用戶的注冊和登陸界面,因此平臺的注冊和登陸是整個平臺的重要模塊之一,是用戶最先接觸、體驗的模塊。制作出一個用戶在視覺層面上看起來干凈、操作項目清晰可辨的注冊網(wǎng)頁界面可以提升用戶體驗。注冊和登陸模塊的流程就是首先提供用戶輸入用戶名、密碼進行登陸這個功能。注冊模塊主要是引導(dǎo)用戶填寫注冊會員的必要信息。登陸和注冊的邏輯流程圖如圖1所示。
圖1 登陸和注冊邏輯流程圖
該模塊主要用來顯示網(wǎng)站界面,在校園交易平臺,網(wǎng)站的首頁直接就包含商品的展示。首頁的商品將通過類似卡片樣子的圖片來展示給用戶。數(shù)據(jù)庫保存商品基本信息,如價格、圖片和件數(shù)等。管理員登陸Django管理后臺上傳商品后,用戶可以在首頁的界面,通過商品的分類顯示或者通過搜索欄搜索關(guān)鍵字的方式找到上傳的商品。在商品詳情頁面,可以看到商品的庫存和銷量、二手商品的成色和價格等詳細信息,用戶可以直接將商品放入購物車,在該頁面里完成訂單的創(chuàng)立。
購物車模塊是電商平臺基礎(chǔ)的展示頁面之一,交易平臺上的所有商品都可以通過加入購物車的方式進行統(tǒng)一支付,完成訂單的建立。特別是對進行批量購買的用戶,購物車模塊對一次性操作多個商品的統(tǒng)一支付起著必不可少的作用。由于本平臺是以校園為單位的商品交易平臺,學(xué)生間的物品交易幾乎不會出現(xiàn)批量交易物品的情況,因此后臺管理平臺上傳商品時基本以一件物品為單位上傳,并且不支持物品數(shù)量的修改,主要是考慮到二手物品單一物件的概率較高,不需要增加和刪減物品的數(shù)量。此外在這個界面下用戶可以選擇繼續(xù)購物或者繼續(xù)結(jié)賬的選項,方便用戶根據(jù)自己需求進行選擇,是人性化購物平臺的體現(xiàn)。
在購物車界面點擊“繼續(xù)結(jié)賬”后,界面會跳轉(zhuǎn)到支付界面,界面包含支付寶以及微信支付的二維碼,方便同學(xué)使用手機掃碼支付。因為是本地化校園交易平臺,考慮到現(xiàn)金的安全性,所以用的是簡易的二維碼,僅起到展示的作用。但支付界面是交易平臺中交易的重要一環(huán)。
在校園交易平臺上,訂單模塊是整個交易平臺的交易核心模塊,這個模塊簡單明了地展示用戶訂單下單的時間、消費記錄和訂單編號等信息。另外該模塊還設(shè)置了評論功能,方便用戶對該商品進行更加詳細的評論,這些評論會展示在商品詳情頁面的下方,方便其他用戶瀏覽,并決定是否購買。
個人信息界面是校園交易平臺上用戶信息展示的地方,是整個平臺較為重要的展示界面。用戶通過該界面可以修改自己的地址,并在地址后面加上手機號碼,方便商家在商品出現(xiàn)問題時可以及時和用戶進行聯(lián)系。另外在用戶詳情模塊里可以看到用戶的注冊時間等信息。
Django ORM(對象關(guān)系映射)是Django自帶的強大功能之一,使得用戶能夠通過Python代碼而非SQL數(shù)據(jù)庫進行交互。它有很多優(yōu)點,比如在將sqlite數(shù)據(jù)庫遷移到MySQL數(shù)據(jù)庫時,Django會自動生成更新數(shù)據(jù)庫所需要的腳本,不會出現(xiàn)由于遷移引發(fā)的程序問題。使用ORM進行商品的搜索操作很簡便,可以簡化搜索的流程,不需要引入第三方搜索引擎,比如haystack的使用。但由于是精確查找,搜索欄中的字符串必須在數(shù)據(jù)庫的信息表中存在,搜索的精度要求比較高,不適用于大型的電商平臺,但考慮到校園交易平臺的規(guī)模較小,是在可接受范圍內(nèi)的。
作為Django Web框架的核心,進行數(shù)據(jù)庫原理學(xué)習(xí)和操作是進行校園交易平臺創(chuàng)建的前提,先安裝好DB browser for sqlite程序,然后進行Python的安裝。通常有兩種方式,①直接從官網(wǎng)下載安裝Python搭建環(huán)境,并通過pip下載安裝需要的包;②通過使用Anaconda安裝搭建Python環(huán)境。通過Anaconda安裝Python搭建環(huán)境的方式本身自帶了集成開發(fā)環(huán)境(integrated development environment,IDE),但還是推薦再在Anaconda環(huán)境下安裝PyCharm程序編譯器,它適合進行Python語言的編程和設(shè)計,可選擇安裝免費的性價比較高的PyCharm社區(qū)版?;赑ython語言、Django Web框架 和MySQL數(shù)據(jù) 庫三個要素,設(shè)計出在局域網(wǎng)內(nèi)本地服務(wù)器上的校園交易平臺網(wǎng)站后,可對交易平臺實現(xiàn)的功能進行測試。
對本校園交易平臺來說,目前還處于設(shè)計初級階段,做的是前后端不分離、本地服務(wù)器下設(shè)計的本地網(wǎng)頁平臺,由于目前條件有限,缺少聯(lián)網(wǎng)之后部署的服務(wù)器,以及聯(lián)網(wǎng)之后進行支付寶公司接口對接完成支付的功能。因此,對校園交易平臺的測試主要在于測驗各項功能是否正常運行。由于網(wǎng)頁的可視化性更加直觀,因此將以前、后端網(wǎng)頁的功能能否順利實現(xiàn)作為主要的測試項目。
首先測試在PyCharm中能否將Django程序和MySQL服務(wù)器建立鏈接,在PyCharm中的終端輸入python manage.py runserver運行代碼后,出現(xiàn)IP地址http://127.0.0.1:8000/,這是本地服務(wù)器的默認地址,說明本地數(shù)據(jù)庫和程序鏈接良好。
點擊http://127.0.0.1:8000/,進入默認以Chrome瀏覽器打開的校園交易平臺,如果是第一次登錄就會直接進入注冊頁面進行注冊。注冊功能如圖2所示。
圖2 注冊功能
在注冊頁面按照規(guī)定完成注冊,或直接登錄后就進入校園交易平臺首頁。該頁面包含有商品展示、分類和首頁展示,首頁展示頁面如圖3所示。
圖3 首頁展示
在首頁可以對商品進行選擇和購買,也可以按照類別進行尋找,點擊類別里的類別項,可以找到該類別里的所有物品。類別功能如圖4所示。
圖4 類別功能
在任何頁面下,點擊左上角的圓形紅色圖標,都可以回到首頁界面繼續(xù)瀏覽,也可以通過搜索特定的商品來直接展示該商品。搜索功能如圖5所示。
圖5 搜索功能
選擇好需要的商品后,點擊商品可以顯示商品詳情頁面,用戶可以對商品的成色、質(zhì)量和價格等進行細心選擇,在該頁面可以把商品放入購物車中。商品詳情頁面如圖6所示。
圖6 商品詳情頁面
用戶選購?fù)晁枭唐泛螅谫徫镘図撁婵梢赃M行最終的付款操作。在任何界面時,點擊網(wǎng)頁右上角的購物車圖標,都可以進入購物車頁面。購物車頁面如圖7所示。
圖7 購物車頁面
在購物車頁面可以瀏覽和比較商品,對不想要的商品可以通過點商品左邊的叉號去除該商品,總價格會重新計算。確認信息無誤后,就可以準確填寫地址和聯(lián)系方式,進行下單操作。然后界面會在用戶點擊繼續(xù)結(jié)賬后跳轉(zhuǎn)到支付界面,使用手機進行掃碼支付。掃碼支付界面如圖8所示。
圖8 掃碼支付界面
下單操作后會顯示操作完成,之后用戶可以通過點擊右上角的人像圖標進入訂單管理,里面會有訂單記錄信息,可以在訂單詳情下面進行評論。訂單詳情頁面如圖9所示。
圖9 訂單詳情頁面
至此,用戶界面的體驗?zāi)K和基本功能就算全部完成,接下來測試的是商家后臺管理系統(tǒng)界面。在PyCharm下輸入python manange.py createsuperuser創(chuàng)建后臺管理系統(tǒng)賬號,在首頁的右上角點擊頭像圖標可進入后臺管理頁面,輸入密碼后,就可以登錄后臺管理系統(tǒng)。登錄頁面如圖10所示。
圖10 Django后臺登陸頁面
進入后臺管理登錄頁面后,可以看到在Django下編輯的七個大類的表,在頁面中以可視化的方式進行顯示。這七個大類的表單連接著數(shù)據(jù)庫里對應(yīng)的七個表,可以方便地進行操作。Django后臺管理頁面如圖11所示。
圖11 后臺管理界面
至此,所有的平臺功能均已測試完畢。前端的功能包括本地服務(wù)器功能、注冊功能、用戶登錄功能、搜索功能、商品詳情頁面、購物車購買功能、訂單詳情功能和評論功能等,經(jīng)過測試,驗證了設(shè)計的校園交易平臺可以實現(xiàn)以上應(yīng)具有的各項功能。另外,在后端管理平臺的賬號創(chuàng)建和登錄功能,后臺管理界面七個表的增、刪、改、查功能和商品在前端網(wǎng)頁的上傳、展示功能等全部均可以實現(xiàn)。
因此,通過對前端網(wǎng)頁功能和后端平臺管理功能的測試和驗證,可以看出本校園交易平臺各項功能運行良好,可涵蓋基礎(chǔ)電商平臺所應(yīng)具備的基本功能。經(jīng)過整體測試,系統(tǒng)反應(yīng)速度良好,無明顯延遲,可操作性強,具有良好的用戶體驗。
基于Python語言、Django Web框架和MySQL數(shù)據(jù)庫,設(shè)計出在局域網(wǎng)內(nèi)本地服務(wù)器上的校園交易平臺網(wǎng)站。完成校園交易平臺的前端設(shè)計和功能實現(xiàn),采用前后端不分離的方式進行編寫和設(shè)計,對其中的SQLite數(shù)據(jù)庫和Django自帶的前端網(wǎng)頁模版進行基于現(xiàn)實需求的二次修改,實現(xiàn)以校園環(huán)境為商業(yè)范圍、學(xué)校商品管理部為商家、學(xué)生為用戶的校園B2C電商系統(tǒng)功能。該校園交易平臺功能完善、界面簡潔、可操作性強,具有一定的實際應(yīng)用價值。校園交易平臺在后期可以進一步完善,需要改進和優(yōu)化的地方具體為:①可以加入網(wǎng)絡(luò)服務(wù)器的部署,使得整個校園交易平臺可以在不同地方聯(lián)網(wǎng)的手機和電腦等終端上顯示;②由于資金所限,目前只能演示掃碼支付功能,無法和微信、支付寶等在線支付接口形成對接,后續(xù)改進需要建立完整的在線支付功能,使校園交易平臺的支付更便捷。校園交易平臺的設(shè)計與實現(xiàn)需要不斷地完善、改進和優(yōu)化,以求達到更好的實際效果。