首页 > 其他分享 >17 如何使用Qweb开发一个页面

17 如何使用Qweb开发一个页面

时间:2023-03-06 22:24:56浏览次数:48  
标签:xml 17 views tongji epidemic page Qweb 页面

odoo 注重敏捷,但是同时也带来的问题我就是不够灵活,如果有一天你的boss让你做一个工作台,将其他模型的数据进行统计,并使用图表的形式进行展示。 这时候该如何做呢?

很明显 odoo 提供的视图时没有办法满足我们的需求的,这个时候 使用qweb注册一个页面就很有必要了。

首先开发之前你需要了解一些知识 【Qweb语法传送】

1 使用Qweb生成一个你想要的html界面(static/src/xml/epidemic_tongji_page.xml)

 

<?xml version="1.0" encoding="UTF-8"?>
<template>
    <t t-name="EpidemicTongjiPage">
    <div>这是一个测试页面</div>
    </t>
</template>

  

2 对AbstractAction模块进行扩展,得到自己的Widget并且使用web.core对我们的Widget进行注册,实现格式如下:(static/src/js/epidemic_tongji_page.js)

 

odoo.define('Epidemic_tongji.tongji_page', function(require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
// 模块扩展
var TongjiPage = AbstractAction.extend({
    template: 'EpidemicTongjiPage',
    ......
});
// 对TongjiPage进行注册,通过映射绑定动作
core.action_registry.add('tag.tongji.page', TongjiPage);
});

  

 

3 注册完成之后,需要新增一个客户端动作来绑定我们自己的界面实现动作的调整,其中动作的tag属性此时需要设置为新增widget的映射值:(tag属性非常重要,必须和映射值保持一致)(views/epidemic_tongji_page_view.xml)

 

<record id="epidemic_tongji_page_action" model="ir.actions.client">
    <field name="name">TongjiPagee</field>
    <field name="tag">'tag.tongji.page</field> 
</record>

  

4 此时我们新建一个菜单项目,并且其 action属性指定到客户端动作来实现页面跳转(views/menu_views.xml):

<!-- Top menu item -->
    <menuitem name="统计页面"
              id="epidemic_tongji_page_menu_root"
              action="epidemic_tongji_page_action"
              sequence="99"
    />

  

5 现在我们基本实现了自定义的界面开发,最后需要将静态资源进行加载:
js文件我们需要使用资产捆绑(views/templates.xml)

 

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <template id="epidemic_tongji.assets_backend" inherit_id="web.assets_backend" name="epidemic_tongji.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/epidemic_tongji/static/src/js/epidemic_tongji_page.js"/>
        </xpath>
    </template>
</odoo>

  

清单关联文件中:

'qweb': ['static/src/xml/epidemic_tongji_page']
'data': ['views/epidemic_tongji_page_view.xml', 
           'views/templates.xml',
           'views/menu_views.xml']

  

最后 重启、更新模块,你会发现页面已经加载好了

标签:xml,17,views,tongji,epidemic,page,Qweb,页面
From: https://www.cnblogs.com/pythonClub/p/17185737.html

相关文章

  • csp201709-2
    题目:计算机软件能力认证考试系统直接对时间进行枚举,本以为会超时,没想到过了,过了就过了、、 #include<bits/stdc++.h>usingnamespacestd;set<int>keep[10105];se......
  • 【django-vue】登录注册模态框分析 登录注册前端页面 腾讯短信功能二次封装 短信验证
    目录昨日回顾csrf跨站请求伪造接口幂等性异常捕获今日内容1登录注册模态框分析Login.vueHeader.vue2登录注册前端页面复制2.0Header.vue2.1Login.vue2.2Register.vue3......
  • P3177 [HAOI2015] 树上染色
    有一棵点数为n的树,树边有边权。给你一个在0∼n之内的正整数k,选择k个点,将其染成黑色,并将其他的n−k个点染成白色。你会获得黑点两两之间的距离加上白点两两之间的......
  • CF1787C - Remove the Bracket
    https://codeforces.com/problemset/problem/1787/CThisisthereasonwhytheproblemwasnamedasRemovetheBracket.\begin{aligned}\text{Product}&=a_1\cdo......
  • CF1741E - Sending a Sequence Over the Network
    https://codeforces.com/contest/1741/problem/ELet'sintroducethedynamics.\({\displaystyledp[i]=true}\)ifontheprefixiitheanswerisYes.Theninthis......
  • 计算机基础_WebSocket以及从URL到页面展示过程
    理解WebSocket协议的底层原理websocket本质上是一种计算机网络应用层的协议,用来弥补http协议在持久通信能力上的不足。虽然http有了keep-alive,但是本质上http请求还是请求......
  • 认证页面
    xhaoxing文件id:6d7d80c2dfc77af1e6192e5ee29b381c splash.html<!DOCTYPEhtml><htmllang="en"><head><!--响应式布局1.在meta中声明viewport元标签-->......
  • CF1738F
    傻题考虑一个点集\(S\),初始\(S=\{1,2,...n\}\)。考虑一个图\(G\)。每次取出\(S\)中度数最大的点\(x\),询问它的所有相连的点并且把这些点从\(S\)中删除,并且把它和这些点在......
  • CF1789 Codeforces Round 853 (Div. 2) D. Serval and Shift-Shift-Shift
    https://codeforces.com/contest/1789/problem/D给定两个n位二进制数a,b,你可以每次使\(a=a\oplusa>>k\)或\(a=a\oplusa<<k\),你需要用不超过n次操作......
  • 在多个页面中使用多个类似的图表
    遇到的问题:1、图表在页面切换时请求结束需要操作dom,所以为组件添加保活机制2、多个图表在一个页面中时,因为echarts是根据dom元素的id来初始化的,所以需要给组件赋予不同的......