【问题标题】:Qweb template not found - Odoo v8未找到 Qweb 模板 - Odoo v8
【发布时间】:2016-10-26 02:27:55
【问题描述】:

我正在使用 Odoo v8 开发一个网站。我想写一个sn-p,它的结构是由javascript加载的。下面是我的代码... 首先,我有一个 sn-p 结构:

<template id="snippet_hello" inherit_id="website2.snippets" name="Snippet Hello">
    <xpath expr="//div[@id='snippet_structure']" position="inside">
        <div class="oe_snippet">
            <div class="oe_snippet_thumbnail">
                <img class="oe_snippet_thumbnail_img" src="/path_to_block_icon/block_icon.png"/>
                <span class="oe_snippet_thumbnail_title">Hello</span>
            </div>
            <section class="oe_snippet_body">
                <div class="oe_snippet_hello">Hello ...</div>
            </section>
        </div>
    </xpath>
    <xpath expr="//div[@id='snippet_options']" position="inside">
        <div data-snippet-option-id='snippet_hello'
            data-selector=".oe_snippet_hello"
            data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel">
        </div>
    </xpath>
</template>

然后我有一点 javascript 代码来呈现 sn-p 内容:

(function () {
    'use strict';
    var website = openerp.website;
    qweb = openerp.qweb;
    qweb.add_template('/path_to_snippet_qweb_template/snippet_template_filename.xml');

    website.snippet.animationRegistry.hello = website.snippet.Animation.extend({
        selector: ".oe_snippet_hello",
        start: function(){
            var $content = $(qweb.render('website.snippet_hello', {a:1}));
            $content.appendTo(this.$target);
        },
    });

})();

然后我有一个 QWeb 模板来显示我的结构内容(文件名:sn-p_template_filename.xml):

<?xml version="1.0" encoding="utf-8"?>
<templates id="template" xml:space="preserve">
    <t t-name="website.snippet_hello">
        <div contenteditable="false">
            <p>Hello snippet</p>
            <t t-esc="a"/>
        </div>
    </t>
</templates>

问题是这一行:

var $content = $(qweb.render('website.snippet_hello', {a:1}));

出现“找不到模板'website.sn-p_hello'”的错误 我注意到当我以管理员身份登录时(没有尝试过其他帐户),它运行良好。当我在浏览器上注销时,它只是发生了错误。 请给我您的建议,谢谢!

【问题讨论】:

    标签: javascript odoo-8 qweb odoo-website


    【解决方案1】:

    这是一个与过时 Odoo 版本相关的老问题,但今天的答案仍然适用(Odoo v11/12/13):

    Template Not found 可能在以下情况下发生:

    • 模板未加载
    • 您的 js 和模板的 xml 文件之间的模板名称不相等。模板名称区分大小写。

    加载模板:

    通常您将项目中的模板保存为/your_module/static/src/xml/snippet_template_filename.xml,并且您必须在/your_module/__manifest__.py 上加载此xml 文件,方法是添加:

     'qweb': [
            "static/src/xml/snippet_template_filename.xml",
        ],
    

    或简写:

     'qweb': [
            "static/src/xml/*.xml",
        ],
    

    您在 odoo 的 App 菜单中安装/更新 your_module,然后您可以通过查看 http://localhost:8069/web/webclient/qweb?mods=your_module 来验证您的模板是否已加载,它应该会返回您的模板。

    您还可以查看最喜欢的浏览器网络检查器以检查 http://localhost:8069/web/webclient/qweb?mods=[...] 请求并检查 mods 中的 your_module 是否正确加载。

    模板可以像这样在你的 js 中使用(Odoo >= v11):

    odoo.define('your_module.NameOfYourJs', function (require) {
        "use strict";
        var QWeb = core.qweb;
        [...]
        var result = QWeb.render('website.snippet_hello', {a:1});
    
    });
    

    注意:要调试资产,您可以使用http://localhost:8069/web?debug=assets

    希望这会有所帮助!

    【讨论】:

    • 你是个野兽!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多