公开/公告号CN106055342A
专利类型发明专利
公开/公告日2016-10-26
原文格式PDF
申请/专利权人 数普金通数据技术有限公司;
申请/专利号CN201610420781.9
发明设计人 陈洋;
申请日2016-06-13
分类号G06F9/44;
代理机构郑州睿信知识产权代理有限公司;
代理人崔旭东
地址 100000 北京市大兴区经济技术开发区博兴八路1号2幢一层
入库时间 2023-06-19 00:42:37
法律状态公告日
法律状态信息
法律状态
2019-04-09
授权
授权
2016-11-23
实质审查的生效 IPC(主分类):G06F9/44 申请日:20160613
实质审查的生效
2016-10-26
公开
公开
技术领域
本发明涉及一种dojango下使用第三方Form扩展组件的方法,属于组件扩展技术领域。
背景技术
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。Dojo是一个用JavaScript语言实现的开源DHTML工具包。Dojo的目标是解决开发DHTML应用程序遇到的那些,长期存在、历史问题(historical problems with DHTML)。跨浏览器问题。Dojango是一个可重用的Django程序使得在Django项目的客户端使用Dojo框架。可以提供多个Dojo版本和源代码之间切换,提供帮助程序使得更多的互联网应用程序与Dojo结合得更好。
在目前企业级web开发中,为了达到快速开发的目的,很多企业在前端JavaScript的选择中,倾向于选择一些比较完善的JavaScript框架,如ExtJS,Dojo等。这些JavaScript框架提供了很多的页面组件,封装了很多功能,开发起来非常方便快捷。例如在NS8000存储管理软件项目中,采用Django框架,使用Dojango进行渲染,使用的前端JavaScript框架为Dojo,NS8000存储管理软件内部有一个功能,要实现文件系统创建,表单中需要使用拥有复选框的树形组件,在Dojo标准控件中没有这个组件,需要使用到第三方扩展控件cbtree。例如在NS8000的架构中,加入cbtree,但是在提交Dojo表单的时候无法将cbtree的值提交。
发明内容
本发明的目的是提供一种dojango下使用第三方Form扩展组件的方法,以解决第三扩展组建Form在Dojo表单下的提交问题。
本发明为解决上述技术问题而提供一种dojango下使用第三方Form扩展组件的方法,该方法的步骤如下:
1)使用Python写一个Django Form,该Form是从Dojango的Form继承而来;
2)将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;
3)填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;
4)Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。
所述submit方法只会提交标准Dojo表单组件的值,若使用到非Dojo标准组件,需要将该组件的值提交,提交过程如下:
A.在表单submit之前,将用户操作的非Dojo组件的值,通过标准JS从DOM获取;
B.在表单内写一个隐藏的Dojo标准input文本框,用于接收从DOM获取来的值;
C.通过隐藏的Dojo标准input文本框,将值提交,以达到将非Dojo组件的值提交。
第三方Form扩展组件为cbtree。
本发明的有益效果是:本发明首先通过使用Python写一个从Dojango的Form继承而来Django Form,然后将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;再填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;最后Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。通过上述过程,本发明能够解决第三扩展组建Form在Dojo表单下的提交问题。本发明建立在Django+Dojo+Dojango平台之上,通过在Dojo的表单中使用第三方扩展组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求。
附图说明
图1是标准组件的第三方组件的表单构建模型图;
图2是非标准组件的第三方组件的表单构建模型图;
图3是以cbtree作为第三方Form扩展组件的表单构建模型图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步的说明。
本发明使用Python写一个Django Form,Form从Dojango的Form继承而来,可以渲染;将Form通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;填写完表单,点击提交按钮,会执行Dojo的submit方法,submit方法将表单中填写的值通过request转交给Django,进行数据处理;数据处理后,传递给后台执行业务;业务执行完成后返回结果。
例如本发明在NS8000存储管理平台中加入了第三方扩展表单控件,NS8000存储管理平台采用Django框架,前端JavaScript使用Dojo。NS8000存储管理系统中的表单构建模型如图1所示。
其中submit方法只会提交标准Dojo表单组件的值,如果使用到非Dojo标准组件,需要通过适配器Adapter才能将非Dojo标准组件的值提交,如图2所示。在表单submit之前,将用户操作的非Dojo组件的值,通过标准JS从DOM获取。在表单内写一个隐藏的Dojo标准input文本框,用于接收从DOM获取来的值。通过这个Dojo标准的隐藏的input文本框,将值提交,从而达到将非Dojo组件的值提交。
下面以cbtree作为第三方Form扩展组件为例进行说明,如图3所示,Client是客户端,Target是cbtree,Adaptee是隐藏的dojo文本框,Adapter是适配器,具体实现方案是将DOM里cbtree数据交给dojo文本框,作用是将普通DOM request请求转换成SpecificRequest,通过POST的方式与表单一同传递给服务器端,从而让后端Python可以获取数据。Client端操作Target(cbtree),cbtree可以被DOM识别,而Dojo表单只可以获取Dojo组件传过来的请求(SpecificRquest),cbtree的数据无法被Dojo表单识别。
dojango下使用第三方Form扩展组件的方法的具体实施例步骤如下:
1.下载cbtree,将资源包导入到工程目录中;
2.在Django模板中引入cbtree.js;
3.写Diango自定义的Field,Widget,使得Form表单能够应用cbtree;
4.改写表单的HTML:加上一段JS和若干个隐藏的input文本框,JS的作用是通过DOM获取第三方组件的值,将值放入隐藏的input文本框中,input文本框需要定义在html的form标签内,值被表单提交;
5.在后台获取隐藏的input文本框的值。
本发明通过在Dojo的表单中使用第三方扩展cbtree组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求,该方法可适用于任何第三方JS控件。
机译: 一种自动方法,其目的是通过在引入第三方补偿的情况下确保在发生中断的情况下通过第三方确保处理数据的目的
机译: 一种第三方密钥交换方法及其系统,智能卡及其微型处理器,能够在不干扰使用智能卡的服务器的情况下,安全地实现密钥交换。
机译: 一种用于引入蝇类营养素物质的设备,用于诊断生物的畸形,并且即使在高rueckformungsgenauigkeit升高的情况下,也可以被引入原形的橡胶状弹性印象物质,并且即使在这种情况下也可以使用蝇类营养素物质对于