一种dojango下使用第三方Form扩展组件的方法
【专利摘要】本发明涉及一种dojango下使用第三方Form扩展组件的方法,属于组件扩展技术领域。本发明首先通过使用Python写一个从Dojango的Form继承而来DjangoForm,然后将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;再填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;最后Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。通过上述过程,本发明能够解决第三扩展组建Form在Dojo表单下的提交问题。本发明建立在Django+Dojo+Dojango平台之上,通过在Dojo的表单中使用第三方扩展组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求。
【专利说明】
一种dojango下使用第三方Form扩展组件的方法
技术领域
[000? ]本发明涉及一种do jango下使用第三方Form扩展组件的方法,属于组件扩展技术领域。
【背景技术】
[0002]D jango是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。JavaScript—种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。Do jo是一个用JavaScript语言实现的开源DHTML工具包。Do jo的目标是解决开发DHTML应用程序遇到的那些,长期存在、历史问题(historical problems with DHTML)。跨浏览器问题。Do jango是一个可重用的D jango程序使得在D jango项目的客户端使用Do jo框架。可以提供多个Do jo版本和源代码之间切换,提供帮助程序使得更多的互联网应用程序与Dojo结合得更好。
[0003]在目前企业级web开发中,为了达到快速开发的目的,很多企业在前端JavaScript的选择中,倾向于选择一些比较完善的JavaScript框架,如Ext JS,Do jo等。这些JavaScript框架提供了很多的页面组件,封装了很多功能,开发起来非常方便快捷。例如在NS8000存储管理软件项目中,采用Django框架,使用Dojango进行清染,使用的前端JavaScript框架为Do jo,NS8000存储管理软件内部有一个功能,要实现文件系统创建,表单中需要使用拥有复选框的树形组件,在Dojo标准控件中没有这个组件,需要使用到第三方扩展控件cbtree。例如在NS8000的架构中,加入cbtree,但是在提交Do jo表单的时候无法将cbtree的值提交。
【发明内容】
[0004]本发明的目的是提供一种dojango下使用第三方Form扩展组件的方法,以解决第三扩展组建Form在Do jo表单下的提交问题。
[0005]本发明为解决上述技术问题而提供一种dojango下使用第三方Form扩展组件的方法,该方法的步骤如下:
[0006]I)使用Python 写一个 D jango Form,该Form 是从 Do jango 的Form 继承而来;
[0007]2)将所写的通过Do jango渲染,在浏览器上形成一个用Dojo构建的表单;
[0008]3)填写表单,通过Do jo的submit方法将表单中填写的值通过request转交给Django;
[0009]4)D jango对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。
[0010]所述submit方法只会提交标准Dojo表单组件的值,若使用到非Do jo标准组件,需要将该组件的值提交,提交过程如下:
[0011]A.在表单submit之前,将用户操作的非Do jo组件的值,通过标准JS从DOM获取;
[0012]B.在表单内写一个隐藏的Do jo标准input文本框,用于接收从DOM获取来的值;
[0013]C.通过隐藏的Do jo标准input文本框,将值提交,以达到将非Do jo组件的值提交。
[0014]第三方Form扩展组件为cbtree。
[0015]本发明的有益效果是:本发明首先通过使用Python写一个从Dojango的Form继承而来D jango Form,然后将所写的通过Do jango清染,在浏览器上形成一个用Do jo构建的表单;再填写表单,通过Do jo的submit方法将表单中填写的值通过request转交给D jango;最后Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。通过上述过程,本发明能够解决第三扩展组建Form在Dojo表单下的提交问题。本发明建立在D jango+Dojo+Do jango平台之上,通过在Do jo的表单中使用第三方扩展组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求。
【附图说明】
[0016]图1是标准组件的第三方组件的表单构建模型图;
[0017]图2是非标准组件的第三方组件的表单构建模型图;
[0018]图3是以cbtree作为第三方Form扩展组件的表单构建模型图。
【具体实施方式】
[0019]下面结合附图对本发明的【具体实施方式】做进一步的说明。
[0020]本发明使用Python写一个D jango Form,Form从Do jango的Form继承而来,可以清染;将Form通过Do jango渲染,在浏览器上形成一个用Do jo构建的表单;填写完表单,点击提交按钮,会执行Do jo的submit方法,submit方法将表单中填写的值通过request转交给Django,进行数据处理;数据处理后,传递给后台执行业务;业务执行完成后返回结果。
[0021]例如本发明在NS8000存储管理平台中加入了第三方扩展表单控件,NS8000存储管理平台采用D jango框架,前端JavaScript使用Dojo。略8000存储管理系统中的表单构建模型如图1所示。
[0022 ]其中submi t方法只会提交标准Do jo表单组件的值,如果使用到非Do j ο标准组件,需要通过适配器Adapter才能将非Do jo标准组件的值提交,如图2所示。在表单submit之前,将用户操作的非Do jo组件的值,通过标准JS从DOM获取。在表单内写一个隐藏的Do jo标准input文本框,用于接收从DOM获取来的值。通过这个Do jo标准的隐藏的input文本框,将值提交,从而达到将非Dojo组件的值提交。
[0023]下面以cbtree作为第三方Form扩展组件为例进行说明,如图3所示,Client是客户端,Target是cbtree ,Adaptee是隐藏的do jo文本框,Adapter是适配器,具体实现方案是将DOM里cbtree数据交给do jo文本框,作用是将普通DOM request请求转换成Spec if icRequest,通过POST的方式与表单一同传递给服务器端,从而让后端Python可以获取数据。Client端操作Target (cbtree),cbtree可以被DOM识别,而Do jo表单只可以获取Do jo组件传过来的请求(Specif icRquest),cbtree的数据无法被Do jo表单识别。
[0024]do jango下使用第三方Form扩展组件的方法的具体实施例步骤如下:
[0025]1.下载cbtree,将资源包导入到工程目录中;
[0026]2.在D jango模板中引入cbtree.js;
[0027]3.写Diango自定义的FieId,Widget,使得Form表单能够应用cbtree ;
[0028]4.改写表单的HTML:加上一段JS和若干个隐藏的input文本框,JS的作用是通过DOM获取第三方组件的值,将值放入隐藏的input文本框中,input文本框需要定义在html的form标签内,值被表单提交;
[0029]5.在后台获取隐藏的input文本框的值。
[°03°] 本发明通过在Do jo的表单中使用第三方扩展cbtree组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求,该方法可适用于任何第三方JS控件。
【主权项】
1.一种do jango下使用第三方Form扩展组件的方法,其特征在于,该方法的步骤如下: 1)使用Python写一个Django Form,该Form是从Do jango的Form继承而来; 2)将所写的通过Dojango渲染,在浏览器上形成一个用Do jo构建的表单; 3)填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给D jango; 4)Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果O2.根据权利要求1所述的dojango下使用第三方Form扩展组件的方法,其特征在于,所述submit方法只会提交标准Do jo表单组件的值,若使用到非Do jo标准组件,需要将该组件的值提交,提交过程如下: A.在表单submit之前,将用户操作的非Dojo组件的值,通过标准JS从DOM获取; B.在表单内写一个隐藏的Dojo标准input文本框,用于接收从DOM获取来的值; C.通过隐藏的Dojo标准input文本框,将值提交,以达到将非Do jo组件的值提交。3.根据权利要求1或2所述的dojango下使用第三方Form扩展组件的方法,其特征在于,第三方Form扩展组件为cbtree。
【文档编号】G06F9/44GK106055342SQ201610420781
【公开日】2016年10月26日
【申请日】2016年6月13日
【发明人】陈洋
【申请人】数普金通数据技术有限公司