Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

OpenERP 7.0 Web模块开发



  • 1)OpenERP Web框架原理<br />1.1)系统启动<br />OpenERP系统启动代码见openerp/cli/server.py,系统启动时候,首先检查多核参数(workers),如果是多进程模式(multi_process),则启动多核版(Multicorn)WSGI_Server,否则启动单核版WSGI_Server。如果是单进程模式,系统同时启动netrpc_server和cron线程。多进程模式,则不启动netrpc_server和cron线程,相关代码参见openerp/service/init.py。因此,多进程模式下,基于netrpc的GUI客户端不能用,同时,系统正常运行必不可少的cron作业需要另开进程启动。<br /><br />1.2)WSGI_Server启动<br />    WSGI_Server启动后,侦听http请求。当收到请求后,轮询handler,如果某handler返回了结果,则返回给客户。如果没有合适的handler响应,则返回404错误页面。<br />    handler分系统handler和模块handler,系统handler是系统启动时候加载的,模块handler是,加载含有handler的模块时候,注册handler到WSGI_Server。系统handler有:wsgi_xmlrpc_1, wsgi_xmlrpc, wsgi_xmlrpc_legacy, wsgi_webdav,他们处理下述路径的web请求:<br />XML_RPC_PATH = '/openerp/xmlrpc'<br />XML_RPC_PATH_1 = '/openerp/xmlrpc/1'<br />JSON_RPC_PATH = '/openerp/jsonrpc'<br />JSON_RPC_PATH_1 = '/openerp/jsonrpc/1'<br /><br />相关代码见:wsgi_server.py 的application_unproxied 。<br /><br />    系统目前只有一个模块handler,即addons/web模块提供的handler。该模块加载时,即注册handler。该handler中,收到http请求时候,根据请求的path,查找http_controller,找到controller则调用该controller的方法。<br />    http_controller的原理是,OpenERP系统将addons下含有static目录的模块当成http_controller。系统加载该模块时候,自动将模块中的继承自web.http.Controller的class当作http_controller。每个http_controller有属性_cp_path,表明该controller处理_cp_path下的请求。系统根据请求路径比对_cp_path,找到相应controller,调用controller的method响应请求。请求路径中最后一个/之后的内容,系统默认为是controller的method名。上述相关代码见:openerp/addons/web/http.py 。<br /><br />2)Web模块开发<br />    OpenERP web模块很简单,只要在普通模块中,a)增加目录static,其中通常存放静态网页内容,包括js,img,xml模板等。b)通常增加一个controllers目录(不是必须的),里面放py的http_controller代码。每个controller都必须继承自openerp.addons.web.http.Controller,并且必须有属性_cp_path 。controller中的每个method相应一种http请求。<br />



  • 1)OpenERP Web框架原理<br />1.1)系统启动<br />OpenERP系统启动代码见openerp/cli/server.py,系统启动时候,首先检查多核参数(workers),如果是多进程模式(multi_process),则启动多核版(Multicorn)WSGI_Server,否则启动单核版WSGI_Server。如果是单进程模式,系统同时启动netrpc_server和cron线程。多进程模式,则不启动netrpc_server和cron线程,相关代码参见openerp/service/init.py。因此,多进程模式下,基于netrpc的GUI客户端不能用,同时,系统正常运行必不可少的cron作业需要另开进程启动。<br /><br />1.2)WSGI_Server启动<br />    WSGI_Server启动后,侦听http请求。当收到请求后,轮询handler,如果某handler返回了结果,则返回给客户。如果没有合适的handler响应,则返回404错误页面。<br />    handler分系统handler和模块handler,系统handler是系统启动时候加载的,模块handler是,加载含有handler的模块时候,注册handler到WSGI_Server。系统handler有:wsgi_xmlrpc_1, wsgi_xmlrpc, wsgi_xmlrpc_legacy, wsgi_webdav,他们处理下述路径的web请求:<br />XML_RPC_PATH = '/openerp/xmlrpc'<br />XML_RPC_PATH_1 = '/openerp/xmlrpc/1'<br />JSON_RPC_PATH = '/openerp/jsonrpc'<br />JSON_RPC_PATH_1 = '/openerp/jsonrpc/1'<br /><br />相关代码见:wsgi_server.py 的application_unproxied 。<br /><br />    系统目前只有一个模块handler,即addons/web模块提供的handler。该模块加载时,即注册handler。该handler中,收到http请求时候,根据请求的path,查找http_controller,找到controller则调用该controller的方法。<br />    http_controller的原理是,OpenERP系统将addons下含有static目录的模块当成http_controller。系统加载该模块时候,自动将模块中的继承自web.http.Controller的class当作http_controller。每个http_controller有属性_cp_path,表明该controller处理_cp_path下的请求。系统根据请求路径比对_cp_path,找到相应controller,调用controller的method响应请求。请求路径中最后一个/之后的内容,系统默认为是controller的method名。上述相关代码见:openerp/addons/web/http.py 。<br /><br />2)Web模块开发<br />    OpenERP web模块很简单,只要在普通模块中,a)增加目录static,其中通常存放静态网页内容,包括js,img,xml模板等。b)通常增加一个controllers目录(不是必须的),里面放py的http_controller代码。每个controller都必须继承自openerp.addons.web.http.Controller,并且必须有属性_cp_path 。controller中的每个method相应一种http请求。<br />



  • 能用简练的语言把复杂的技术说清楚,值得一读!谢谢分享



  • 好........<br />



  • 好文!正看这部分



  • 好,收藏了



  • 不错的内容,学习



  • 感谢楼主的无私分享。。。。



  • 简单易懂,自己要是看的话就满天星星,谢谢


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待