QWeb是odoo模板引擎

  • 概述
    QWeb是odoo主要模板引擎,采用xml表述,最后生成HTML文件

  • 一般用法

    • 条件表达式

      <t t-if="record.effort_estimate.raw_value > 0">
          <li>Estimate <field name="effort_estimate"/>li>
       t>

      比较符号:
      lt(<) lte(<=) gt(>) gte(>=)
      注 < <= 不能用在表达式中,只能用字母代替重点内容

    • 输出值 t-esc 和 t-raw


      t-esc 过滤安全值,像html元素
      t-raw 数据库中的原始数据
    • 循环

      ;

      t-foreach=”record.message_follower_ids.raw_value.slice(0, 3)” 还可以切片
      还有一些变量
      rec_index 从0开始循环索引
      rec_size 要循环的记录集大小
      rec_first 第一个元素
      rec_last 最后一个元素
      rec_even index为偶数时为真
      rec_odd index为奇数时为真
      rec_parity 是偶数和奇数
      rec_all 表示循环结束的标识
      rec_value 循环一个字典时,的键的值

    • 动态属性

      t-as="rec">
      class="oe_kanban_image oe_kanban_avatar_smallbox"/>


      t-att- prefixed 如 的src 就可以 t-att-src=”…”
    • 属性的字符替换



      t-attf-prefixed 取代内容,上面的就是动态类
    • 变量设置
      • 设置变量 t-set t-value

        设置了变量 new_variable 的值 为 True
        t-value 也可以是表达

        设置了变量foo值为3
        t-value可以是一段html

      • ok


      • 设置了变量foo 为
      • ok
    • 设置属性
      t-att- name name 是属性名


      结果:

      t-attf-$name 用于混合,有字符串也有变量,变量用{{}}


    • t-att=mapping 键值对组成属性,主要用多对


      结果:

      t-att=pair 一对,这个对一个是键,后一个是值

      <=>

      结果:

    • 包含其它模板


      t-as="rec">
      class="oe_kanban_image oe_kanban_avatar_smallbox"/>



      。。。

      • t-call 调用其它模板

        复用灵活一些


        t-as="rec">
        class="oe_kanban_image oe_kanban_avatar_smallbox"/>



        。。。


    • QWeb 其它指令


      结果显示


      t-att 接受字典


      结果显示

    • card类式加菜单

      í
    • card类式加颜色


    • 为长文本加省略号

      过超32个字符就加… 不显示内容了

    • 自定义css 和javascript的资源






    • 调用其它模板
      采用t-call

    • 字段渲染

      @http.route('hello/ def hello(self,user,**kw)
      return http.request.render('module.hello',{'user':user})
      -------


    • 可用字段选择修饰

      -------------

      ------------

    • 模板继承

      
      
      
       得到的结果:
      
      

      Extended!

      Base template

      得到的结果:

      A

      Extended!

      B

      调用系统的基础模板:
    • 调试
      t-debug

      <=>
      importlib.import_module("pdb").set_trace()

    • python的请求模板
      response = http.request.render('my-template',{'context_value':99})
      用得是 http.request.render()方法

  • 代码分析
    • 扫描枪的操作界面



      .....


      转载自:(http://www.cnblogs.com/toby2chen/p/5198201.html)

你可能感兴趣的:(odoo,template,xml,qweb,html,xml,模板引擎,odoo,template)