qweb加html文件,Odoo Qweb语法

一:简介

QWeb是一个基于xml的模板引擎,用于生成HTML片段和页面。

模板指令是写在xml标签中,以t-开头。

二:template标签

创建一个QWeb视图,只需要一个arch元素并包含以下的属性:

id -- 视图的id

name, inherit_id, priority 与ir.ui.view的一致

primary -- 设置为True并与inherit_id一起使用时,设置为主视图

groups -- 以逗号分隔的分组id

page -- 设置为True时,该页面为网页

optional -- enabled 或 disabled,在用户界面中是否可以被禁用,默认是可以禁用

三:Qweb语法

1:输出内容

2:条件语句:t-if属性值为True时,输出t标签包含内容

ok

#当condition是true的时候解析成:

ok

#condition为false的时候解析成

还有t-elif/t-else:

Happy bithday!

Welcome master!

Welcome!

3:循环

t-foreach用来指定需要循环处理的数据,t-as提供的是在后面用于代表当前项目的变量名。

#上述语句输出:

1

2

3

4:属性

qweb可以对属性进行实时计算并在输出时设置,通过t-attr来实现,有三种形式:

1)t-att-属性名 可以根据属性名创建一个属性:

#输出

属性值也可以为一个 格式化字符串,可以在运行期间确定具体值,作为属性值

//item_parity在运行时确定值

2)t-att=mapping 如果参数是映射表,每个键值对会生成一个属性:

#输出

3)t-att=pair 如果参数是元组或2个元素的数组,那么第一个项就作为属性名,第二个作为属性值:

#输出

5:设置变量

使用t-set属性来实现变量声明,它的值就是设置的变量名。然后用t-value属性的属性值作为新变量的值。

#输出3

6:调用其他qweb模板

//调用指定名字的模板

四:Python专用指令

1:格式化纪录

t-field只能用于格式化记录字段(从browe函数获取到的),可以根据字段类型自动匹配格式;

t-options只能用于自定义字段,最常用的是widget,其他的选项都是field-xx或widget-xx

2:在controller中渲染模版

response = http.request.render('模版名', {参数列表})

#会直接从controller里返回一个响应对象

3:在视图中渲染模版

在ir.ui.view:中的render方法:

render(cr, uid, id[, values][, engine='ir.qweb][, context])

通过view的数据库id来渲染一个qweb视图模板,模板在ir.ui.view记录会自动加载,它会为渲染环境设置一系列默认值

request - 当前WebRequest对象

debug - 当前请求是否是debug模式

quote_plus - 是否进行url encode转义

json - 相关的标准库

time - 相关的标准库

datetime - 相关的标准库

relativedelta - model的时间处理属性

keep_query - 一个keep_query函数,参数1:values-传递给qweb的上下文环境,参数2:engine (str) 用于qweb渲染的odoo模型名

五:JS专用指令

1:定义模板

2:继承模板

模板继承是用来修改已存在的模板,即给在其他模块定义的模板添加内容。

通过t-extend来表示,它的值是被继承的模板名,通过t-jquery来定位,通过t-operation来指定修改的位置/方式。

new element

t-jquery是一个css选择器,用于选择需要改变的节点,并通过t-operation指定需要进行的操作

append - 新节点的内容添加到原节点的后面(最后一个子节点后)

prepend - 新节点内容添加到原节点前面(第一个子节点前)

before - 新节点内容添加到原节点前

after - 新节点内容添加到原节点后

inner - 新节点内容替换原节点的子节点

replace - 新节点内容直接替换原节点

如果没有指定operation,那么模板内容会被解析成javascript节点,并将context节点设置为this

六:调试指令

1:t-log

2:断点调试t-debug

3:t-js

该节点内容里的javascript代码会在渲染时执行,接收一个context参数,将当前的环境传给js,从而可以使用context.XX调用上下文中的内容。

console.log("var is", ctx.var);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值