You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Odoo 10 QWeb报表头部插入Logo失败问题求助

Odoo 10 QWeb报表头部插入Logo无效的问题分析与解决

我之前在迁移Odoo报表的时候也碰到过类似的情况,你的代码在Odoo 8能运行但Odoo 10失效,主要有几个关键原因,咱们一步步来解决:

核心问题:路径中的多余空格

你写的两段代码里,路径字符串中都加了不必要的空格(比如/ lt_sales / static /...),Odoo 8对静态资源路径的解析比较宽松,会自动忽略这些空格,但Odoo 10的路由解析机制更严格,空格会导致系统无法正确定位到图片文件,这是最直接的失效原因。

正确的写法与优化方案

方案1:修正路径空格,使用动态绑定(推荐)

先把路径里的空格全部去掉,然后用t-att-src动态绑定资源路径,这是QWeb的标准写法,兼容性更好:

<img t-att-src="'/lt_sales/static/src/img/logo.png'" />

方案2:使用系统配置的公司Logo(更灵活)

如果你的报表需要适配多公司场景,或者想直接用系统后台配置的Logo,推荐绑定公司的Logo字段,这样不用硬编码路径:

<!-- 报表上下文通常会自动传入company变量 -->
<img t-att-src="image_data_uri(company.logo)" class="img" />
<!-- 如果上下文没有company,也可以通过当前用户的公司获取 -->
<img t-att-src="image_data_uri(user.company_id.logo)" class="img" />

这里的image_data_uri是Odoo提供的QWeb工具方法,能把二进制图片数据转换成可直接渲染的Data URI格式。

方案3:使用widget属性增强渲染

如果还是有问题,可以尝试加上widget="image"属性,让Odoo用专门的图片组件来渲染:

<img widget="image" t-att-src="'/lt_sales/static/src/img/logo.png'" />

额外检查步骤

  • 确认文件与模块状态:确保lt_sales模块已经正确安装,并且static/src/img/logo.png文件确实存在于模块的对应目录中,文件名和大小写要完全匹配(Linux系统下路径是区分大小写的)。
  • 清除缓存:Odoo会缓存静态资源,修改代码后一定要清除Odoo的服务器缓存(进入「设置」->「技术」->「缓存管理」->「清除缓存」),同时刷新浏览器缓存(Ctrl+F5)。
  • 权限验证:确保当前用户有权限访问该模块的静态资源(通常模块安装后默认有权限,但如果是自定义模块可以检查权限设置)。

内容的提问来源于stack exchange,提问作者Saloua SAHNOUNE

火山引擎 最新活动