首页 > 其他分享 >Odoo QWeb 语法

Odoo QWeb 语法

时间:2024-12-28 19:55:42浏览次数:8  
标签:Odoo 视图 语法 指令 使用 QWeb 模板

QWeb 是 Odoo 的模板引擎,用于生成 HTML 页面和片段。它基于 XML 格式,允许在模板中使用特定的指令来动态生成内容。以下是 QWeb 的一些关键概念和语法,帮助你理解和使用它。

一:简介

QWeb 是一种基于 XML 的模板引擎,用于生成 HTML 页面和片段。模板中的指令以 t- 开头。

二:template 标签

在 Odoo 中创建 QWeb 视图,需要定义一个 arch 元素,包含以下属性:

  • id: 视图的唯一标识符。
  • name, inherit_id, priority: 与 ir.ui.view 中的相同,定义视图的名称、继承关系和优先级。
  • primary: 设置为 True 时,结合 inherit_id 使用,标记为主视图。
  • groups: 用逗号分隔的分组 ID。
  • page: 设置为 True 时,表示这是一个网页。
  • optional: 可选值为 enabled 或 disabled,表示在用户界面中是否可以被禁用,默认可以禁用。

三:QWeb 语法

  1. 输出内容

    使用 t-esc 输出变量的值。

    <p><t t-esc="content"/></p>
    
  2. 条件语句

    使用 t-ift-elif 和 t-else 进行条件判断。

    <div>
        <t t-if="condition">
            <p>ok</p>
        </t>
    </div>
    
    <div>
        <p t-if="user.birthday == today()">Happy birthday!</p>
        <p t-elif="user.login == 'root'">Welcome master!</p>
        <p t-else="">Welcome!</p>
    </div>
    
  3. 循环

    使用 t-foreach 和 t-as 遍历列表。

    <t t-foreach="[1, 2, 3]" t-as="i">
        <p><t t-esc="i"/></p>
    </t>
    
  4. 属性

    使用 t-att-* 动态设置 HTML 属性。

    • 单个属性:

      <div t-att-a="42"/>
      
    • 格式化字符串:

      <li t-attf-class="row {{ item_parity }}"/>
      
    • 映射表:

      <div t-att="{'a': 1, 'b': 2}"/>
      
    • 元组:

      <div t-att="['a', 'b']"/>
      
  5. 设置变量

     

    使用 t-set 和 t-value 定义和赋值变量。

    <t t-set="foo" t-value="2 + 1"/>
    <t t-esc="foo"/>
    
  6. 调用其他模板

     

    使用 t-call 引用其他模板。

    <t t-call="other-template"/>
    

四:Python 专用指令

  1. 格式化记录

  • t-field 用于格式化记录字段。
  • t-options 定制字段显示,常用选项是 widget
  1. 在视图中渲染模板

    使用 ir.ui.view 的 render 方法,通过视图 ID 渲染模板。

  2. 在 Controller 中渲染模板

    response = http.request.render('template_name', {'param': value})
    

 五:调试指令

  1. 日志输出

    <t t-log="message"/>
    
  2. 断点调试

    <t t-if="condition">
        <t t-debug=""/>
    </t>
    
  3. 执行 JavaScript

     

    使用 t-js 在渲染时执行 JavaScript 代码。

  4. <t t-js="ctx">
        console.log("var is", ctx.var);
    </t>
    

六:JS 专用指令

  1. 定义模板

    <templates>
        <t t-name="template-name">
            <!-- template code -->
        </t>
    </templates>
    
  2. 继承模板

    使用 t-extend 修改现有模板。

    <t t-extend="base.template">
        <t t-jquery="ul" t-operation="append">
            <li>new element</li>
        </t>
    </t>
    
    • t-jquery 用于选择节点。
    • t-operation 指定操作类型,如 appendprependbeforeafterinnerreplace

这些指令和功能使得 QWeb 可以灵活地生成动态网页,适合 Odoo 中的复杂业务逻辑和界面需求。

标签:Odoo,视图,语法,指令,使用,QWeb,模板
From: https://blog.csdn.net/qq_70140795/article/details/144675739

相关文章

  • odoo12环境搭建(linux系统)
    1.准备环境Centos7.6.1810:Postgresql12:Centos7下安装Postgresql12-CSDN博客python3.6.7:Centos7下搭建python3.6.7环境-CSDN博客odoo12:https://github.com/odoo/odoo/archive/refs/heads/12.0.zip2.odoo12环境配置odoo12源码解压,我放置在 /home/soft/odoo12路径下配......
  • Markdown语法学习
    Markdowm语法学习标题通过“#”来表示,几个“#”,表示几级标题字体hello一个*号,斜体hello两个*号,粗体hello三个*号,斜体加粗hello两个~号,废弃引用用>表示引用分割线用---表示分割线图片超链接[点击跳转虎牙直播](在线直播_全部游戏直播_网络游戏直播-虎......
  • 前段时间将一个项目代码从java转为鸿蒙,总结了其中java转ArkTS语法的一些经验
    前段时间将一个项目代码从java转为鸿蒙,总结了其中java转ArkTS语法的一些经验。整个项目代码花了10多天时间,转完后运行bug还是较少的。以下是记录下来的一些,部分未经常出现的可能没有记录//向下取整(int)->Math.floor()Integer.parseInt("10")->parseInt("10")//字符串st......
  • Oracle、SQL Server 和 MySQL 的 SQL 语法区别
    虽然Oracle、SQLServer和MySQL都遵循SQL标准,但它们在某些语法和功能上存在差异。以下是它们之间的一些主要语法区别:1. 数据类型Oracle:NUMBER(p,s):用于存储数值,p 是精度,s 是小数位数。VARCHAR2(size):用于存储可变长度字符串。DATE 和 TIMESTAMP:用于存储日......
  • monaco 编辑器支持内置的语法高亮和提示
    monaco是vscode当前正在使用的编辑器,对于代码高亮,提示等功能支持的很完全,这里主要介绍一下我在开发中遇到的编辑器需要提示JS的语法是如何处理的,我的项目是vite的,vite-plugin-monaco-editor这个组件可以支持'css'|'html'|'json'|'typescript'|'editorWorkerService';这......
  • GaussDB SQL基础语法-变量&常量
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、GaussDB数据库中的常量和变量的基本概述及语法定义数据库中的变量和常量是两种重要的数据......
  • GO 学习笔记之三 基础语法(5) 切片
    一、定义Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。其存在容量和长度的说法,长度是实际数据的长度,容量是可容纳的数组长度。容量......
  • 【语法】哪些动词之后接to do ,什么时候不接或者接doing
    一、动词后接“todo”的情况表示意愿、计划或目的:这类动词通常表示主语想要做某事、计划做某事或有某种目的。例如,“wanttodosth.”(想要做某事)、“plantodosth.”(计划做某事)、“hopetodosth.”(希望做某事)等。表示学习或获得技能:这类动词通常与学习和获得新技能......
  • Typora的基本语法
    Typora的基本语法Typora是一款非常好用的Markdown编辑器,它支持大多数标准的Markdown语法。可以使用WPGithuberMD插件转换Markdown来写博客但有时候不是特别兼容某些语法。下面是一些使用基本语法。Markdown基本语法tips:首先可以ctrl+/来切换源代码模式标题#这是一......
  • 正则表达式语法+常用正则表达式
    1.简介1>正则表达式(RegularExpression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式2>正则表达式是一种用于模式匹配和搜索文本的工具3>正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文......