DTCloud—QWeb
原生Qweb的继承
基础的QWeb继承与之前的xml的写法都不一样,首先不需要dtcloud标签的包裹,另外不同于普通的模板,基础模板的写法需要使用templates标签包裹。
例如,我们给Many2one的部件添加一个前缀12345,可以这么写:
<templates><t t-extend="FieldMany2One"><t t-jquery=".o_field_many2one" t-operation="before"><a>123456</a></t></t>
</templates>
t-extend用于扩展Qweb的内容,配合t-operation可以实现xml中position类似的效果,具体来说,t-operation有以下几种值可以选择:
- append: 节点的主体被附加在上下文节点的末尾(在上下文节点的最后一个子节点之后)
- prepend: 节点的主体被添加到上下文节点(在上下文节点的第一个子节点之前插入)
- before: 节点的主体被插入在上下文节点之前
- after: 节点的主体被插入在上下文节点之后
- inner: 节点的主体替换上下文节点的子节点
- replace: 该节点的主体用于替换上下文节点本身
t-jquery指令采用一个CSS selector。此选择器用于扩展模板以选择应用指定的t-operation的上下文节点。
如果使用t-extend,dtcloud会要求你必须写入一个t-jquery选择器,如果想要使用replace的本身节点话,就会冲突。此时,你应该选择放弃使用t-extend,而使用同名的t-name将原有的代码覆盖掉,就像python的后定义的方法会覆盖掉前面定义的方法一样。
另外,如果想要完全重写某个QWeb部件,那么可以不用上面提到的几种操作,直接简单粗暴的定义一个同名的QWeb部件即可,后加载的部件会覆盖掉之前定义的部件。
Qweb的传值
类似python中的jinja2模板,dtcloud中的qweb也是可以通过后台传值给前端页面的,前端页面也可以进行逻辑判断。Qweb中的逻辑判断使用标签
逻辑控制 t-if
t-if
主要用于条件判断:
<t t-if="condition"><p>Test</p>
</t>
数据输出 t-esc
t-esc
用于输出变量的值:
<p><t t-esc="value"/></p>
字段输出 t-field
<td><span t-field="ml.product_id.display_name"/><br/><span t-field="ml.product_id.description_picking"/>
</td>
t-esc
和t-field
的区别
t-esc
用于输出数据,其值为python表达式执行完的结果。t-field
只能用于字段的访问,且只对存储的字段有效。另外,t-field-options
可用于格式化字段值。例如:
<t-field="o.date" t-field-options='{"widget":"date"'}'/>
逻辑循环 t-foreach
t-foreach
用于迭代循环:
<t t-foreach="[1, 2, 3]" t-as="i"><p><t t-esc="i"/></p>
</t>
t-as
将每次迭代的值传给变量i,方便后续的调用。
这里有多个内置的变量(以i为例):
- i_all: 迭代的对象
- i_value: 迭代对象的值,一般情况下和i的值相同,但是当迭代字典时,i为key,i_value为字典的值
- i_index: 序列
- i_size: 迭代列表的长度
- i_first: 列表的第一个值
- i_last: 列表的最后一个值
- i_parity: 当前迭代的奇偶性
- i_even: 当前迭代是否为偶数
- i_odd: 当前迭代是否为奇数
赋值变量t-set
t-set
可以自定义变量:
<t t-set="existing_variable" t-value="False"/>
设置属性值
qweb可以用于设置html中的元素的属性值。
t-att-$name
t-att-$name
用于创建动态的属性名:
<div t-att-name="42">
将创建一个拥有name属性值为42的节点:
<div name="42">
**t-attf- n a m e ∗ ∗ ‘ t − a t t f − name** `t-attf- name∗∗‘t−attf−name与
t-att- n a m e ‘ 类 似 , 区 别 在 于 ‘ t − a t t f − name`类似,区别在于`t-attf- name‘类似,区别在于‘t−attf−name`输出的是格式化的字符串:
<t t-foreach="[1, 2, 3]" t-as="item"><li t-attf-class="row {{ (item_index % 2 === 0) ? 'even' : 'odd'"><t t-out="item"/></li>
</t>
输出:
<li class="row even">1</li>
<li class="row odd">2</li>
<li class="row even">3</li>
数据的格式化
对应货币的金额精度,可以使用format_currency方法来格式化货币的精度:
<td class = "pos-right-align"> <tt-esc = "widget.format_currency (taxdetail.amount)" />
</ td>
对于不需要货币符号的数字,可以使用
DTCloud—QWeb相关推荐
- Odoo10参考系列--QWeb报表
报表是写在HTML / QWeb中,像Odoo中的所有普通视图.你可以使用普通QWeb 流程控制工具.PDF的渲染是通过wkhtmltopdf执行的. 如果要在某个模型上创建报表,则需要定义该报表和它 ...
- odoo10参考系列--QWeb
QWeb是被Odoo[2]使用的主要的模版引擎.它是一个XML模板引擎[1],主要用于生成HTML片段和页面. 模板指令指定的XML属性的前缀 t-,例如t-if 为条件,与元素和其他属性被直接渲染. ...
- ODOO13 有同志留言,想看看QWEB渲染widget实现自定义按钮。今天,他来撩
有同志留言,想看看Widget实现自定义按钮.今天,他来撩. Odoo生态系统的一个常见需求是从外部扩展/更改基本系统的行为(通过安装应用程序,即不同的模块).例如,可能需要在某些视图中添加新的小部件 ...
- odoo openerp 分享-oe嵌入qweb】用js读取数据库数据,用类似html语言重写web报表
[分享-oe嵌入qweb]用js读取数据库数据,用类似html语言重写web报表 (阅读 4403 次) 阿狸 新手上路 帖子: 26 人气: 1 开启阅读模式 [分享-oe嵌入qweb]用js读取 ...
- DTCloud 一键部署方案
dtcloud_install 一键部署方案 原文件名称为 DTCloud git dt_install --help dt_install 从一个内置地址获取源代码,安装PostgreSQL,pyt ...
- DTCLOUD亿智云
DTCLOUD亿智云 DTCLOUD亿智云平台简介 DTCLOUD亿智云是基于基于BIM+AIOT技术的快速应用开发PaaS平台,适用于数字孪生场景应用解决方案,包括智慧工地.智慧建筑.智慧园区.智慧 ...
- 【零散技术】Odoo 服务台(helpdesk)Qweb设计模式
序言:时间是我们最宝贵的财富,珍惜手上的每个时分 目录 一.缘起 二.心落 三.纷扰 四:忖量 五:已矣 一.缘起 近期有一个基于 Odoo服务台(helpdesk)的项目开发,web端显示的原始需求 ...
- 一键安装DTCloud
一键安装DTCloud 欢迎使用 DTCloud 一键安装 DTCloud 使用环境 使用方法 1. 下载 一键安装脚本 2. 执行脚本 3. 项目配置信息 服务说明 1. 数据库安装在哪里? 2. ...
- DTCloud 下载数据至word模板
import base64 from datetime import datetime from io import BytesIO from docxtpl import DocxTemplateg ...
最新文章
- android bitmap 转drawable,android Drawable转换成Bitmap失败
- 当OpenCV遇到VS2019时,以前的配置方式翻车了….
- Prima Cartoonizer中文版
- mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
- vCenter Server Appliance(VCSA )6.7部署指南
- SQL Server大量数据秒级插入/新增/删除
- 日语学习-多邻国-关卡1-时间
- EasyUI系列学习(十一)-Accordion(分类)
- php连接mysql原生_php链接mysql原生写法
- python是干什么的-python干嘛用
- python3面向对象_Python3面向对象编程
- 智慧农业项目建设体系之精准饲喂系统及数据分析
- C++学习系列(二)—— 核心编程(面向对象)
- Netfilter学习之NAT类型动态配置(三)MASQUERADE内核空间的实现
- 京东开源组件库NutUI 3.1 正式发布:开启多端开发之路
- TP6自定义分页样式
- maxwell采集mysql binlog 日志数据到kafka topic
- 侧脸生成正脸概论与精析
- python selenium设置chrome浏览器保持登录方式
- Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)
热门文章
- 【GIT】error: failed to push some refs to 'https://github.com/username/python.git'
- 一元线性回归方程的参数估计
- 函数凹凸性证明中点函数值和函数值中点的关系
- java中算术异常值_依据拉依达准则来剔除异常值程序
- MySQL数据库管理员用户密码忘记了怎么办?
- 匈牙利法及其最优性分析
- type=“hiden”的用法
- 无线充电宝CE认证和FCC认证怎么办理?无线充移动电源UL报告
- 腾讯云-视频直播(android集成)
- 用Python解读“女神大会”,直男心目中的女神是这样的~