简体   繁体   中英

Qweb template not found - Odoo v8

I'm developing a website with Odoo v8. I want to write a snippet that its struct is load by javascript. Bellow are my code ... Firstly, I have a snippet struct:

<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>

Then I have a little javascript code to render snippet content:

(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);
        },
    });

})();

Then I have a QWeb template to display my struct content (filename: snippet_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>

Problem is this line:

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

occurred error that "Template 'website.snippet_hello' not found" I noticed that when I logged in as Admin (haven't tried another account), it works well. It just occurred error when I logged out on my browser. Please let me your advice, thanks!

This is an old question related to an obsolete Odoo's version but answer is still relevant today (Odoo v11/12/13) :

Template Not found could occur when:

  • template is not loaded
  • template names are not equals between your js and your template's xml files. Templates names are case sensitive.

Loading a template:

Usually you save your templates in your project as /your_module/static/src/xml/snippet_template_filename.xml , and you must load this xml file on /your_module/__manifest__.py by adding:

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

or shorthand:

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

You install/update your_module in odoo's App menu, then you can verify that your template is loaded by looking at http://localhost:8069/web/webclient/qweb?mods=your_module , it should returns your templates.

You can also look at favorite browser network inspector to check the http://localhost:8069/web/webclient/qweb?mods=[...] request and checks that in mods your_module is loaded properly.

Template can be used in your js like in this (Odoo >= v11):

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

});

Note: to debug assets you can use http://localhost:8069/web?debug=assets .

Hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM