首页 > 代码库 > qweb

qweb

qweb odoo的模板系统, odoo系统中, 它有不同的用途和实现,

  • 一个是 web client widget 的渲染引擎, 它是通过 javascript实现的,也是 最早引入到 odoo系统的,在 OpenERP 最初引入 web client 加入的,现在使用 qweb2.js 这个 libaray 对模板进行 渲染
  • 另外用作 web pagereport、看板 等的模板引擎,它是 通过 python 实现的

       

   

web client 使用的 qweb template manifest 文件中的 qweb项目 进行定义,

技术分享

   

qweb 定义的 模板xml 将在 odoo启动的时候, 打包为 /web/webclient/qweb 资源, 例如

技术分享

   

打包的具体代码是

技术分享

   

通过 concat_xml 所有的 qweb 打包合并在一起,提供给 webclient 使用。

   

   

web page reportkankan 归根到底 都是 ir.ui.view 其中 reporttemplate 均是 ir.ui.view 的别名, 他们 都是 通过标准的 data file 进行定义, 例如

技术分享

   

webclient_templates 定义了 web client 页面的骨架

技术分享

   

这些 data file 安装模块的时候, 被安装到 ir.ui.view 里面去, 例如

技术分享

   

因此, web page 的修改 可以直接 view 进行 修改

   

同样, report 的内容也是 装载如到 view 里面, 例如

技术分享

   

   

对于看板,也可以 签入 qweb 定义的 页面片段,例如

技术分享

   

qweb