在odoo数据模板中调用qweb模板
Call qweb template inside odoo data template
我正在尝试为登录和注册创建一个 OTP 服务。所以我为 otp 服务制作了一个工作正常的模块。但是这里对于 UI,我制作了一个模板,应该在登录页面内调用该模板以显示 otp 框和 otp 发送按钮。请参阅下面的示例代码:
<templates xml:space="preserve">
<div name="otp_service" t-name="bulk_sms_otp_service.otp_service">
<h1>Hello world</h1>
</div>
</templates>
现在我正尝试在登录视图中调用此模板。请看下面:
<odoo>
<template id="custom_login" name="Custom login" inherit_id="web.login">
<xpath expr="//p[hasclass('alert-success')]" position="after">
<t t-call="bulk_sms_otp_service.otp_service"/>
</xpath>
</template>
</odoo>
但是这个调用不起作用。给我这样的错误:
External id "bulk_sms_otp_service.otp_service" not found
我不知道我的代码有什么问题或者我错了。请帮我解决这个问题。
您可以在 Helpers 阅读:
in which case templates stored in the database (as views)
可以推导出一些qweb模板没有存入数据库
您还可以在 JS QWeb Template Engine 文档中了解到,每个模块清单中的 qweb 条目中列出的文件中定义的模板会在 Web 客户端启动时加载。
当 odoo 处理 custom_login
模板时,它会尝试检索 bulk_sms_otp_service.otp_service
模板 view_id
(从 ir.model.data
)到 read 相应的模板和它将失败,因为 custom_login
模板未存储在数据库中(在 ir.ui.view
中)。
我正在尝试为登录和注册创建一个 OTP 服务。所以我为 otp 服务制作了一个工作正常的模块。但是这里对于 UI,我制作了一个模板,应该在登录页面内调用该模板以显示 otp 框和 otp 发送按钮。请参阅下面的示例代码:
<templates xml:space="preserve">
<div name="otp_service" t-name="bulk_sms_otp_service.otp_service">
<h1>Hello world</h1>
</div>
</templates>
现在我正尝试在登录视图中调用此模板。请看下面:
<odoo>
<template id="custom_login" name="Custom login" inherit_id="web.login">
<xpath expr="//p[hasclass('alert-success')]" position="after">
<t t-call="bulk_sms_otp_service.otp_service"/>
</xpath>
</template>
</odoo>
但是这个调用不起作用。给我这样的错误:
External id "bulk_sms_otp_service.otp_service" not found
我不知道我的代码有什么问题或者我错了。请帮我解决这个问题。
您可以在 Helpers 阅读:
in which case templates stored in the database (as views)
可以推导出一些qweb模板没有存入数据库
您还可以在 JS QWeb Template Engine 文档中了解到,每个模块清单中的 qweb 条目中列出的文件中定义的模板会在 Web 客户端启动时加载。
当 odoo 处理 custom_login
模板时,它会尝试检索 bulk_sms_otp_service.otp_service
模板 view_id
(从 ir.model.data
)到 read 相应的模板和它将失败,因为 custom_login
模板未存储在数据库中(在 ir.ui.view
中)。