一种dojango下使用第三方Form扩展组件的方法技术

技术编号:13911093 阅读:331 留言:0更新日期:2016-10-27 03:11
本发明专利技术涉及一种dojango下使用第三方Form扩展组件的方法,属于组件扩展技术领域。本发明专利技术首先通过使用Python写一个从Dojango的Form继承而来DjangoForm,然后将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;再填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;最后Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。通过上述过程,本发明专利技术能够解决第三扩展组建Form在Dojo表单下的提交问题。本发明专利技术建立在Django+Dojo+Dojango平台之上,通过在Dojo的表单中使用第三方扩展组件,在Form表单正确展示,后台数据正确获取,达到企业级web开发需求。

【技术实现步骤摘要】

本专利技术涉及一种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控件。本文档来自技高网
...

【技术保护点】
一种dojango下使用第三方Form扩展组件的方法,其特征在于,该方法的步骤如下:1)使用Python写一个Django Form,该Form是从Dojango的Form继承而来;2)将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;3)填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;4)Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。

【技术特征摘要】
1.一种dojango下使用第三方Form扩展组件的方法,其特征在于,该方法的步骤如下:1)使用Python写一个Django Form,该Form是从Dojango的Form继承而来;2)将所写的通过Dojango渲染,在浏览器上形成一个用Dojo构建的表单;3)填写表单,通过Dojo的submit方法将表单中填写的值通过request转交给Django;4)Django对收到的数据进行处理后传递给后台执行业务,后台执行业务完成后返回结果。2.根据权利要求1所述的dojango下使用第三方Form扩展组件的方...

【专利技术属性】
技术研发人员:陈洋
申请(专利权)人:数普金通数据技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1