一種dojango下使用第三方Form擴展組件的方法
【專利摘要】本發(fā)明涉及一種dojango下使用第三方Form擴展組件的方法,屬于組件擴展技術(shù)領(lǐng)域。本發(fā)明首先通過使用Python寫一個從Dojango的Form繼承而來DjangoForm,然后將所寫的通過Dojango渲染,在瀏覽器上形成一個用Dojo構(gòu)建的表單;再填寫表單,通過Dojo的submit方法將表單中填寫的值通過request轉(zhuǎn)交給Django;最后Django對收到的數(shù)據(jù)進行處理后傳遞給后臺執(zhí)行業(yè)務(wù),后臺執(zhí)行業(yè)務(wù)完成后返回結(jié)果。通過上述過程,本發(fā)明能夠解決第三擴展組建Form在Dojo表單下的提交問題。本發(fā)明建立在Django+Dojo+Dojango平臺之上,通過在Dojo的表單中使用第三方擴展組件,在Form表單正確展示,后臺數(shù)據(jù)正確獲取,達到企業(yè)級web開發(fā)需求。
【專利說明】
一種dojango下使用第三方Form擴展組件的方法
技術(shù)領(lǐng)域
[000? ]本發(fā)明涉及一種do jango下使用第三方Form擴展組件的方法,屬于組件擴展技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]D jango是一個開放源代碼的Web應(yīng)用框架,由Python寫成。采用了MVC的軟件設(shè)計模式,即模型M,視圖V和控制器C。它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。JavaScript—種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。Do jo是一個用JavaScript語言實現(xiàn)的開源DHTML工具包。Do jo的目標是解決開發(fā)DHTML應(yīng)用程序遇到的那些,長期存在、歷史問題(historical problems with DHTML)??鐬g覽器問題。Do jango是一個可重用的D jango程序使得在D jango項目的客戶端使用Do jo框架??梢蕴峁┒鄠€Do jo版本和源代碼之間切換,提供幫助程序使得更多的互聯(lián)網(wǎng)應(yīng)用程序與Dojo結(jié)合得更好。
[0003]在目前企業(yè)級web開發(fā)中,為了達到快速開發(fā)的目的,很多企業(yè)在前端JavaScript的選擇中,傾向于選擇一些比較完善的JavaScript框架,如Ext JS,Do jo等。這些JavaScript框架提供了很多的頁面組件,封裝了很多功能,開發(fā)起來非常方便快捷。例如在NS8000存儲管理軟件項目中,采用Django框架,使用Dojango進行清染,使用的前端JavaScript框架為Do jo,NS8000存儲管理軟件內(nèi)部有一個功能,要實現(xiàn)文件系統(tǒng)創(chuàng)建,表單中需要使用擁有復選框的樹形組件,在Dojo標準控件中沒有這個組件,需要使用到第三方擴展控件cbtree。例如在NS8000的架構(gòu)中,加入cbtree,但是在提交Do jo表單的時候無法將cbtree的值提交。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種dojango下使用第三方Form擴展組件的方法,以解決第三擴展組建Form在Do jo表單下的提交問題。
[0005]本發(fā)明為解決上述技術(shù)問題而提供一種dojango下使用第三方Form擴展組件的方法,該方法的步驟如下:
[0006]I)使用Python 寫一個 D jango Form,該Form 是從 Do jango 的Form 繼承而來;
[0007]2)將所寫的通過Do jango渲染,在瀏覽器上形成一個用Dojo構(gòu)建的表單;
[0008]3)填寫表單,通過Do jo的submit方法將表單中填寫的值通過request轉(zhuǎn)交給Django;
[0009]4)D jango對收到的數(shù)據(jù)進行處理后傳遞給后臺執(zhí)行業(yè)務(wù),后臺執(zhí)行業(yè)務(wù)完成后返回結(jié)果。
[0010]所述submit方法只會提交標準Dojo表單組件的值,若使用到非Do jo標準組件,需要將該組件的值提交,提交過程如下:
[0011]A.在表單submit之前,將用戶操作的非Do jo組件的值,通過標準JS從DOM獲??;
[0012]B.在表單內(nèi)寫一個隱藏的Do jo標準input文本框,用于接收從DOM獲取來的值;
[0013]C.通過隱藏的Do jo標準input文本框,將值提交,以達到將非Do jo組件的值提交。
[0014]第三方Form擴展組件為cbtree。
[0015]本發(fā)明的有益效果是:本發(fā)明首先通過使用Python寫一個從Dojango的Form繼承而來D jango Form,然后將所寫的通過Do jango清染,在瀏覽器上形成一個用Do jo構(gòu)建的表單;再填寫表單,通過Do jo的submit方法將表單中填寫的值通過request轉(zhuǎn)交給D jango;最后Django對收到的數(shù)據(jù)進行處理后傳遞給后臺執(zhí)行業(yè)務(wù),后臺執(zhí)行業(yè)務(wù)完成后返回結(jié)果。通過上述過程,本發(fā)明能夠解決第三擴展組建Form在Dojo表單下的提交問題。本發(fā)明建立在D jango+Dojo+Do jango平臺之上,通過在Do jo的表單中使用第三方擴展組件,在Form表單正確展示,后臺數(shù)據(jù)正確獲取,達到企業(yè)級web開發(fā)需求。
【附圖說明】
[0016]圖1是標準組件的第三方組件的表單構(gòu)建模型圖;
[0017]圖2是非標準組件的第三方組件的表單構(gòu)建模型圖;
[0018]圖3是以cbtree作為第三方Form擴展組件的表單構(gòu)建模型圖。
【具體實施方式】
[0019]下面結(jié)合附圖對本發(fā)明的【具體實施方式】做進一步的說明。
[0020]本發(fā)明使用Python寫一個D jango Form,F(xiàn)orm從Do jango的Form繼承而來,可以清染;將Form通過Do jango渲染,在瀏覽器上形成一個用Do jo構(gòu)建的表單;填寫完表單,點擊提交按鈕,會執(zhí)行Do jo的submit方法,submit方法將表單中填寫的值通過request轉(zhuǎn)交給Django,進行數(shù)據(jù)處理;數(shù)據(jù)處理后,傳遞給后臺執(zhí)行業(yè)務(wù);業(yè)務(wù)執(zhí)行完成后返回結(jié)果。
[0021]例如本發(fā)明在NS8000存儲管理平臺中加入了第三方擴展表單控件,NS8000存儲管理平臺采用D jango框架,前端JavaScript使用Dojo。略8000存儲管理系統(tǒng)中的表單構(gòu)建模型如圖1所示。
[0022 ]其中submi t方法只會提交標準Do jo表單組件的值,如果使用到非Do j ο標準組件,需要通過適配器Adapter才能將非Do jo標準組件的值提交,如圖2所示。在表單submit之前,將用戶操作的非Do jo組件的值,通過標準JS從DOM獲取。在表單內(nèi)寫一個隱藏的Do jo標準input文本框,用于接收從DOM獲取來的值。通過這個Do jo標準的隱藏的input文本框,將值提交,從而達到將非Dojo組件的值提交。
[0023]下面以cbtree作為第三方Form擴展組件為例進行說明,如圖3所示,Client是客戶端,Target是cbtree ,Adaptee是隱藏的do jo文本框,Adapter是適配器,具體實現(xiàn)方案是將DOM里cbtree數(shù)據(jù)交給do jo文本框,作用是將普通DOM request請求轉(zhuǎn)換成Spec if icRequest,通過POST的方式與表單一同傳遞給服務(wù)器端,從而讓后端Python可以獲取數(shù)據(jù)。Client端操作Target (cbtree),cbtree可以被DOM識別,而Do jo表單只可以獲取Do jo組件傳過來的請求(Specif icRquest),cbtree的數(shù)據(jù)無法被Do jo表單識別。
[0024]do jango下使用第三方Form擴展組件的方法的具體實施例步驟如下:
[0025]1.下載cbtree,將資源包導入到工程目錄中;
[0026]2.在D jango模板中引入cbtree.js;
[0027]3.寫Diango自定義的FieId,Widget,使得Form表單能夠應(yīng)用cbtree ;
[0028]4.改寫表單的HTML:加上一段JS和若干個隱藏的input文本框,JS的作用是通過DOM獲取第三方組件的值,將值放入隱藏的input文本框中,input文本框需要定義在html的form標簽內(nèi),值被表單提交;
[0029]5.在后臺獲取隱藏的input文本框的值。
[°03°] 本發(fā)明通過在Do jo的表單中使用第三方擴展cbtree組件,在Form表單正確展示,后臺數(shù)據(jù)正確獲取,達到企業(yè)級web開發(fā)需求,該方法可適用于任何第三方JS控件。
【主權(quán)項】
1.一種do jango下使用第三方Form擴展組件的方法,其特征在于,該方法的步驟如下: 1)使用Python寫一個Django Form,該Form是從Do jango的Form繼承而來; 2)將所寫的通過Dojango渲染,在瀏覽器上形成一個用Do jo構(gòu)建的表單; 3)填寫表單,通過Dojo的submit方法將表單中填寫的值通過request轉(zhuǎn)交給D jango; 4)Django對收到的數(shù)據(jù)進行處理后傳遞給后臺執(zhí)行業(yè)務(wù),后臺執(zhí)行業(yè)務(wù)完成后返回結(jié)果O2.根據(jù)權(quán)利要求1所述的dojango下使用第三方Form擴展組件的方法,其特征在于,所述submit方法只會提交標準Do jo表單組件的值,若使用到非Do jo標準組件,需要將該組件的值提交,提交過程如下: A.在表單submit之前,將用戶操作的非Dojo組件的值,通過標準JS從DOM獲??; B.在表單內(nèi)寫一個隱藏的Dojo標準input文本框,用于接收從DOM獲取來的值; C.通過隱藏的Dojo標準input文本框,將值提交,以達到將非Do jo組件的值提交。3.根據(jù)權(quán)利要求1或2所述的dojango下使用第三方Form擴展組件的方法,其特征在于,第三方Form擴展組件為cbtree。
【文檔編號】G06F9/44GK106055342SQ201610420781
【公開日】2016年10月26日
【申請日】2016年6月13日
【發(fā)明人】陳洋
【申請人】數(shù)普金通數(shù)據(jù)技術(shù)有限公司