Odoo中Qweb使用入门

本文介绍了如何在Odoo中使用Qweb模板引擎。首先,通过官方文档和示例展示了Qweb的基本概念和特点。接着,通过一个实际例子详细讲解了如何获取Qweb示例代码、引入模块、添加静态文件以及使用Qweb呈现数据。文章还讨论了Qweb模板的标签语法,并介绍了如何与服务器进行交互,包括`call()`和`query()`方法的使用。最后,给出了一个Qweb列表查询的实现过程。
摘要由CSDN通过智能技术生成

参考

可参考官网例子https://doc.odoo.com/trunk/web/qweb/

http://thierry-godin.developpez.com/openerp/tutorial-module-creation-pos-modification-english-version/

1 Qweb官方定义

Qweb被用作OpenERP的Web客户端模板引擎。它是一种基于XML的模板语言,同Genshi, Thymeleaf、Facelets模板具有相似并且具有以下特性:

完全在客户端浏览器中完成渲染;

一个模板文件中可以包含多个模板,通常一个模板文件中包含一个模板;

对OpenERP的web组件有很好的支持,也可以用于除开OpenERP web外的其他框架。

 

2 OpenERP中使用Qweb

 

 2.1 获取Odoo中由Bazaar管理的Qweb例子源代码

bzr branch lp:~niv-openerp/+junk/oepetstore -r 1-Ossl.cert_reqs=none

从python安装路劲下的Script目录中复制项目oepetstore到OpenERP的插件(addons)目录下,启动OpenERP,更新并安装oepetstore模块:

完成后在Chrome浏览器下访问http://localhost:8069/ 依次点击菜单:Pet Store àHome Page

点击无效,系统会提示。

 

这是由于定义在__openerp__.py文件中定义模块需要加载的petstore.js没被引用到系统。

暂时没找到原因,我用的是odoo_8.0rc1-latest版本,不知道是不是版本从7升级到8后的变化,解决方法:

在模块目录下建立xml文件(名称可随便取如link.xml),通过指定路劲引入js和css,

然后修改模块定义中data内容增加link.xml引用。(至于js和css此处没有生效,可去掉里面的引用)。

link.xml 内容:

<?xml version="1.0"encoding="utf-8"?>

<!-- vim:fdn=3:

-->

<openerp>

   <data>

        <template id="assets_backend" name="petstore" inherit_id="web.assets_backend">

            <xpath expr="."position="inside">

              <link rel="stylesheet" href="/oepetstore/static/src/css/petstore.css"/>

                <script type="text/javascript"src="/oepetstore/static/src/js/petstore.js"></script>

            </xpath>

        </template>

   </data>

</openerp>

完成后重启系统,升级模块,再次点击菜单:Pet Store àHomePage ,在控制台下出现“petstore home page loaded”则表示模块已经运行成功:

到此Qweb还没开始使用,这仅仅是通过odoo的简单的应用了Widget组件。

 

官方对Widget定义,参考:https://doc.odoo.com/trunk/web/widget/

class  openerp.web.Widget()

这是odoo中所有的可视化组件的基类。它对应于一个MVC视图。它处理部分的网页提供一系列的服务:

通过Qweb进行渲染;

继承关系;

生命周期管理(包括当父对象被删除子类的摧毁);

DOM文档插入操作,通过jQuery插入方法。插入对象可以是任何相应的jQuery方法(一般选择器,DOM节点和jQuery对象)。

 

2.2 通过Qweb结合Widget组件运用

目标:

点击左侧菜单,查询模块例子中表message_of_the_day的数据,通过Qweb以列表形式呈现。

(通过例子中自带的菜单添加一些假数据)

 

2.2.1 编写js代码

在static/src/js/petstore.js中添加

// MessageListPage部件扩展自Widget基类

instance.oepetstore.MessageListPage = instance.web.Widget.e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值