原生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-esct-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−namet-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相关推荐

  1. Odoo10参考系列--QWeb报表

    报表是写在HTML / QWeb中,像Odoo中的所有普通视图.你可以使用普通QWeb 流程控制工具.PDF的渲染是通过wkhtmltopdf执行的. 如果要在某个模型上创建报表,则需要定义该报表和它 ...

  2. odoo10参考系列--QWeb

    QWeb是被Odoo[2]使用的主要的模版引擎.它是一个XML模板引擎[1],主要用于生成HTML片段和页面. 模板指令指定的XML属性的前缀 t-,例如t-if 为条件,与元素和其他属性被直接渲染. ...

  3. ODOO13 有同志留言,想看看QWEB渲染widget实现自定义按钮。今天,他来撩

    有同志留言,想看看Widget实现自定义按钮.今天,他来撩. Odoo生态系统的一个常见需求是从外部扩展/更改基本系统的行为(通过安装应用程序,即不同的模块).例如,可能需要在某些视图中添加新的小部件 ...

  4. odoo openerp 分享-oe嵌入qweb】用js读取数据库数据,用类似html语言重写web报表

    [分享-oe嵌入qweb]用js读取数据库数据,用类似html语言重写web报表  (阅读 4403 次) 阿狸 新手上路 帖子: 26 人气: 1 开启阅读模式 [分享-oe嵌入qweb]用js读取 ...

  5. DTCloud 一键部署方案

    dtcloud_install 一键部署方案 原文件名称为 DTCloud git dt_install --help dt_install 从一个内置地址获取源代码,安装PostgreSQL,pyt ...

  6. DTCLOUD亿智云

    DTCLOUD亿智云 DTCLOUD亿智云平台简介 DTCLOUD亿智云是基于基于BIM+AIOT技术的快速应用开发PaaS平台,适用于数字孪生场景应用解决方案,包括智慧工地.智慧建筑.智慧园区.智慧 ...

  7. 【零散技术】Odoo 服务台(helpdesk)Qweb设计模式

    序言:时间是我们最宝贵的财富,珍惜手上的每个时分 目录 一.缘起 二.心落 三.纷扰 四:忖量 五:已矣 一.缘起 近期有一个基于 Odoo服务台(helpdesk)的项目开发,web端显示的原始需求 ...

  8. 一键安装DTCloud

    一键安装DTCloud 欢迎使用 DTCloud 一键安装 DTCloud 使用环境 使用方法 1. 下载 一键安装脚本 2. 执行脚本 3. 项目配置信息 服务说明 1. 数据库安装在哪里? 2. ...

  9. DTCloud 下载数据至word模板

    import base64 from datetime import datetime from io import BytesIO from docxtpl import DocxTemplateg ...

最新文章

  1. android bitmap 转drawable,android Drawable转换成Bitmap失败
  2. 当OpenCV遇到VS2019时,以前的配置方式翻车了….
  3. Prima Cartoonizer中文版
  4. mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
  5. vCenter Server Appliance(VCSA )6.7部署指南
  6. SQL Server大量数据秒级插入/新增/删除
  7. 日语学习-多邻国-关卡1-时间
  8. EasyUI系列学习(十一)-Accordion(分类)
  9. php连接mysql原生_php链接mysql原生写法
  10. python是干什么的-python干嘛用
  11. python3面向对象_Python3面向对象编程
  12. 智慧农业项目建设体系之精准饲喂系统及数据分析
  13. C++学习系列(二)—— 核心编程(面向对象)
  14. Netfilter学习之NAT类型动态配置(三)MASQUERADE内核空间的实现
  15. 京东开源组件库NutUI 3.1 正式发布:开启多端开发之路
  16. TP6自定义分页样式
  17. maxwell采集mysql binlog 日志数据到kafka topic
  18. 侧脸生成正脸概论与精析
  19. python selenium设置chrome浏览器保持登录方式
  20. Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)

热门文章

  1. 【GIT】error: failed to push some refs to 'https://github.com/username/python.git'
  2. 一元线性回归方程的参数估计
  3. 函数凹凸性证明中点函数值和函数值中点的关系
  4. java中算术异常值_依据拉依达准则来剔除异常值程序
  5. MySQL数据库管理员用户密码忘记了怎么办?
  6. 匈牙利法及其最优性分析
  7. type=“hiden”的用法
  8. 无线充电宝CE认证和FCC认证怎么办理?无线充移动电源UL报告
  9. 腾讯云-视频直播(android集成)
  10. 用Python解读“女神大会”,直男心目中的女神是这样的~