• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Django的用戶信息管理系統(tǒng)

      2021-04-13 08:46:36余斌
      電腦知識與技術(shù) 2021年5期
      關(guān)鍵詞:信息管理數(shù)據(jù)庫

      余斌

      摘要:用戶信息管理是一項重要而基礎(chǔ)的工作。為提高信息管理效率與標準,運用網(wǎng)絡(luò)應(yīng)用開發(fā)框架Django開發(fā)用戶信息管理系統(tǒng)。該管理系統(tǒng)實現(xiàn)了操作員管理,用戶信息管理與校對等功能,并結(jié)合具體需求就如何拓展Django ORM API進行探討。

      關(guān)鍵詞:信息管理;數(shù)據(jù)庫;Django關(guān)系代數(shù);查詢

      1引言

      隨著計算機與互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,人們對信息生成、存儲、處置方式也在逐步演化。信息管理方式從過去客戶端/服務(wù)器模式轉(zhuǎn)向瀏覽器/服務(wù)器模式。運行于服務(wù)器端的腳本語言,如Perl,PHP等隨即興起。網(wǎng)絡(luò)應(yīng)用開發(fā)初期,腳本語言業(yè)務(wù)邏輯與表示邏輯交織,網(wǎng)絡(luò)應(yīng)用程序可維護性較差。為了方便應(yīng)用開發(fā),將網(wǎng)絡(luò)應(yīng)用程序中常用功能模塊進行抽取組合,構(gòu)建網(wǎng)絡(luò)開發(fā)框架。網(wǎng)絡(luò)開發(fā)框架按照MVC模式,將數(shù)據(jù)邏輯、業(yè)務(wù)邏輯、表示邏輯解耦,明晰了開發(fā)流程,規(guī)范了開發(fā)模式,提高了開發(fā)效率。網(wǎng)絡(luò)開發(fā)框架出現(xiàn)解決了網(wǎng)絡(luò)應(yīng)用開發(fā)的困境。

      Python是一種面向?qū)ο?、解釋?zhí)行、通用腳本語言,它具有語法結(jié)構(gòu)簡單,開發(fā)過程規(guī)范,內(nèi)置標準庫完善,第三方類庫豐富等優(yōu)點。它在網(wǎng)絡(luò)爬取、WEB開發(fā)、圖像處理、數(shù)值計算、機器學(xué)習(xí)、自然語言處理等方面都有許多優(yōu)秀開源項目。Django是一種基于Python的網(wǎng)絡(luò)開發(fā)框架。Django一方面為開發(fā)人員提供了用戶管理,表單處理,數(shù)據(jù)庫建模,模板渲染,數(shù)據(jù)過濾,防跨站攻擊等功能,另一方面也允許開發(fā)人員能夠?qū)?nèi)置模塊根據(jù)需求進行拓展。

      Django采用了MTV模式,即Model-Template-View。Django將業(yè)務(wù)邏輯、表示邏輯以及數(shù)據(jù)庫定義三者在應(yīng)用開發(fā)過程中完全分離。在Models.py模塊中用ORM定義數(shù)據(jù)庫結(jié)構(gòu)并實現(xiàn)對數(shù)據(jù)庫操作封裝,在Views.py模塊中實現(xiàn)業(yè)務(wù)邏輯,完成對數(shù)據(jù)的操作,包括增加、修改、刪除、查詢等操作以及其他需要實現(xiàn)的功能,操作結(jié)果作為參數(shù)傳遞給Templates中對應(yīng)的表示邏輯模塊,即通過模板渲染出對應(yīng)頁面并通過瀏覽器展示給用戶。

      Django開發(fā)網(wǎng)絡(luò)應(yīng)用程序以項目為組織結(jié)構(gòu),功能不同的應(yīng)用模塊組合構(gòu)成一個項目。一個基本Django網(wǎng)絡(luò)應(yīng)用程序的結(jié)構(gòu)如圖1所示。

      2系統(tǒng)數(shù)據(jù)建模

      2.1需求分析

      用戶信息管理系統(tǒng)主要目標是對部門用戶信息按特定要求進行有效管理。部門由兩個小組分別維護同一組用戶不同類別信息,每個小組各自維護本小組所采集用戶信息與變化情況,并在一定周期內(nèi)校驗用戶基礎(chǔ)信息,確保信息同步。如果某個小組所維護數(shù)據(jù)不在另一小組數(shù)據(jù)中,即出現(xiàn)了新增用戶信息,則將此數(shù)據(jù)加入另一小組數(shù)據(jù)庫中。如果兩個小組存在著相似數(shù)據(jù),但關(guān)鍵信息不一致,則提醒雙方核實該項數(shù)據(jù),最后分別更新到各自數(shù)據(jù)庫中。立足數(shù)據(jù)需求與業(yè)務(wù)特點,將該系統(tǒng)分成五大模塊:操作員與權(quán)限管理,增加用戶信息,查找用戶信息,核對用戶信息與用戶信息匯總。

      2.2數(shù)據(jù)建模

      結(jié)合上述功能需求,用戶信息管理系統(tǒng)需建立6個數(shù)據(jù)表:CKUser,CJUser,Phone,Operation,Operator,Rank,其中CKUser,CJUser用于存儲兩個工作小組各自用戶信息,Phone用于存儲所有用戶電話號碼,Operation保存用戶信息新增更改刪除等操作記錄信息,Operator分別存儲兩個小組人員信息,Rank用于存儲各個人員權(quán)限級別。各個數(shù)據(jù)表的表結(jié)構(gòu)信息以及數(shù)據(jù)表之間的關(guān)系如圖2所示。Django內(nèi)建支持多種數(shù)據(jù)庫?;诒拘畔⒐芾硐到y(tǒng)開發(fā)需求,選擇文件型數(shù)據(jù)庫SQLite作為數(shù)據(jù)存儲。

      3開發(fā)

      Django采用ORM模式在models.py模塊中創(chuàng)建相應(yīng)代碼,即可通過命令行在數(shù)據(jù)庫中建立對應(yīng)數(shù)據(jù)表。如建立CKUser表,我們只需創(chuàng)建CKUser類。CKUser類繼承自父類models.Model,類中每個屬性都是數(shù)據(jù)表列名,列的屬性由models屬性擴展而得到,models支持的數(shù)據(jù)類型包括字符型,整型,布爾型,時間型,文本型以及外鍵等。在創(chuàng)建好對象實體后,還可在models.py中實現(xiàn)常用數(shù)據(jù)庫數(shù)據(jù)操作,將數(shù)據(jù)庫操作代碼都統(tǒng)一管理,并在views.py中導(dǎo)入使用。

      網(wǎng)絡(luò)應(yīng)用程序通過表單從瀏覽器端獲取數(shù)據(jù)。Django可以通過兩種方式創(chuàng)建表單。一是通過 forms.ModelForm,設(shè)置該表單所對應(yīng)數(shù)據(jù)模型,即可按照數(shù)據(jù)模型創(chuàng)建特定表單;一是用戶結(jié)合具體需求定制所需表單。建立表單后,我們就可以在views模塊中引用表單來與用戶進行數(shù)據(jù)交換。表單在接受用戶輸入數(shù)據(jù)時,應(yīng)對數(shù)據(jù)格式進行有效性與合法性驗證,一方面避免數(shù)據(jù)類型錯誤引發(fā)程序出錯,另一方面防止惡意用戶利用表單操作對數(shù)據(jù)庫進行SQL注入攻擊,以提高系統(tǒng)安全性。

      3.1數(shù)據(jù)管理

      Django通過ORM封裝了對數(shù)據(jù)庫各種操作,業(yè)務(wù)邏輯層通過調(diào)用同一組API可以完成對不同數(shù)據(jù)庫的各種操作。對于數(shù)據(jù)庫進行基本新增,查找,更新,刪除可以通過API實現(xiàn)。

      通過創(chuàng)建一個對象即可生成一條記錄,或者通過get_or_create(),先去查詢數(shù)據(jù)庫是否存在相同數(shù)據(jù),若未找到則生成該數(shù)據(jù)。如增加操作員,通過add_operator方法用新建操作員的表單中的數(shù)據(jù)Operator.objects.create方法就生成了Operator表中的一條新數(shù)據(jù)。

      通過get,filter,all等API可以通過不同過濾條件來查找數(shù)據(jù)庫記錄。例如,通過user = cjUser.objects.get(phone=phone)可以獲得CJUser表中與需查詢號碼一致的用戶。通過save,update可以更新所選擇記錄信息,通過delete可以刪除所選擇記錄。

      3.2信息校驗

      為保證系統(tǒng)安全性,必須完成操作員權(quán)限管理與操作控制,確保未登錄則無法顯示或者只能顯示而無法更新信息。登錄后A組只能顯示更改A組的信息,B組只能顯示更改B組的信息??梢杂肈jango內(nèi)部裝飾器@login_require來實現(xiàn)。裝飾器是一種語法糖結(jié)構(gòu)。它在不改變函數(shù)原有功能前提下,可以為函數(shù)增加新功能與要求。例如裝飾器@login_require就可以滿足用戶在登錄之后才能運行index函數(shù)對應(yīng)網(wǎng)絡(luò)請求。

      用戶登錄之后方可進行信息校驗。我們以用戶姓名與電話號碼來判斷兩個小組信息是否同步??梢詫?shù)據(jù)差別情況分為以下幾種情況。在A表中存在,但在B表中不存在即用戶屬于集合(A-A[?]B),反之在B表中存在,但在A表中不存在用戶屬于集合(B-A[?]B)。如果在A表B表中都存在,且信息一致則不用處理。如果號碼相同,查看兩者名字是否類似或者音近或是形近字。如果用戶名字接近,電話號碼不同但也比較接近,可提醒工作人員進行人工甄別是否輸入不準確所致。

      在進行兩表差異查詢時,Django內(nèi)置ORM數(shù)據(jù)庫操作無對應(yīng)API,故需采用原生SQL命令來實現(xiàn)此類比較需求。Django網(wǎng)絡(luò)應(yīng)用程序支持兩種方式在運行期間執(zhí)行原生SQL命令序列。第一種使用cursor.execute(),返回一個查詢對象實例,若要獲取查詢結(jié)果還要執(zhí)行查詢對象的方法fetchall()。第二種somemodel.objects.raw(),也返回一個查詢對象實例,也可直接返回查詢結(jié)果,只需在select 子語句中加上主鍵鍵值,如phone_user.id。實現(xiàn)代碼如下:

      3.3應(yīng)用發(fā)布

      Django既有內(nèi)置開發(fā)HTTP服務(wù)器,也可以通過配置適配符合WSGI標準WEB服務(wù)器,如FastCGI,Ngnix等。內(nèi)置開發(fā)服務(wù)器性能較弱,通常用于開發(fā)測試環(huán)境,在生成環(huán)境中應(yīng)選用第三方WEB服務(wù)器以提高服務(wù)性能。

      4結(jié)論

      Django是一種成熟的網(wǎng)絡(luò)應(yīng)用開發(fā)框架,適合從小型到大規(guī)模網(wǎng)絡(luò)應(yīng)用開發(fā)。本用戶信息管理系統(tǒng)能夠較直觀地核對用戶信息,提高工作效率,減少了人為校驗差錯發(fā)生,取得較好實際應(yīng)用效果。信息管理系統(tǒng)根據(jù)時間戳詳細記錄用戶操作記錄與內(nèi)容,為信息維護職責(zé)區(qū)分提供數(shù)據(jù)支持,也為進一步分析用戶信息提供了數(shù)據(jù)保障。下一步工作方向,優(yōu)化在數(shù)據(jù)量較大時對兩表中差異數(shù)據(jù)的校驗算法與查詢效率;增加數(shù)據(jù)導(dǎo)入導(dǎo)出功能;定期自動執(zhí)行核對任務(wù)并提醒工作人員差異數(shù)據(jù)。

      參考文獻:

      [1] Mark Lutz.Learning.Python [M]. 侯靖,譯.3版.北京:機械工業(yè)出版社,2009.

      [2] Harry Percival. Python.WEB開發(fā):測試驅(qū)動方法[M].安道,譯.北京:人民郵電出版社,2015.

      [3] Bennett J.Practical django projects[M].Berkeley,CA:Apress,2009.

      [4] Grant Allen,Mike Owens.SQLite權(quán)威指南 [M].楊謙,譯.2版.北京:電子工業(yè)出版社,2012.

      【通聯(lián)編輯:光文玲】

      猜你喜歡
      信息管理數(shù)據(jù)庫
      造價信息管理在海外投標中的應(yīng)用探討
      評《現(xiàn)代物流信息管理與技術(shù)》(書評)
      信息管理在市政PPP工程風(fēng)險控制中的作用
      江西建材(2018年2期)2018-04-14 08:01:16
      數(shù)據(jù)庫
      財經(jīng)(2017年15期)2017-07-03 22:40:49
      數(shù)據(jù)庫
      財經(jīng)(2017年2期)2017-03-10 14:35:35
      在高速公路信息管理中如何做好QC小組活動
      數(shù)據(jù)庫
      財經(jīng)(2016年15期)2016-06-03 07:38:02
      財務(wù)審計信息管理問題研究
      數(shù)據(jù)庫
      財經(jīng)(2016年3期)2016-03-07 07:44:46
      數(shù)據(jù)庫
      財經(jīng)(2016年6期)2016-02-24 07:41:51
      天峻县| 托克托县| 南召县| 普格县| 息烽县| 沾化县| 西充县| 土默特右旗| 张家港市| 东方市| 海原县| 巴青县| 玉田县| 翼城县| 四平市| 营口市| 库伦旗| 临漳县| 顺平县| 佛坪县| 龙胜| 惠水县| 柏乡县| 宜兰县| 剑川县| 儋州市| 本溪市| 班玛县| 荣昌县| 灵宝市| 鞍山市| 班戈县| 通榆县| 客服| 清涧县| 开远市| 鞍山市| 大兴区| 瑞昌市| 衡阳市| 小金县|