【问题标题】:Odoo Email template not renderingOdoo 电子邮件模板未呈现
【发布时间】:2016-09-12 11:59:49
【问题描述】:

我正在尝试创建电子邮件模板并尝试添加一些条件

%if object.origin:
origin : ${object.origin or ''}
%endif 

但是当我尝试渲染模板时,它只渲染 $part 而不是 %if %endif 部分,

所以 %if 和 %end if 在电子邮件模板中看起来是可见的,并且它没有执行条件。

如何克服?

【问题讨论】:

    标签: email openerp odoo-8


    【解决方案1】:

    Odoo 使用jinja & mako 模板引擎作为电子邮件模板,您的代码看起来像使用了mako 模板,但您可以尝试jinja 模板。应用 jinja 模板后,代码变得不一样了,

    {% if object.origin %}
    origin : ${object.origin or ''}
    {% endif %}
    

    【讨论】:

      【解决方案2】:

      分享知识:

      这个解析问题很可能是由多种因素造成的:

      Jinja2/Mako 模板中的% 语法对应于行 声明,并且这仅在 % 符号是第一个时才有效 行上的非空白字符。当您处理 HTML 时 模板(就像电子邮件模板一样),有一个非常非常 很有可能每行在 % 之前都有很多不可见的 HTML 标签 符号,或者 % 符号不在自己的行上。

      这是无效的:
      % if object.street2: ${(object.street or '-') | 安全}
      % endif

      虽然这是有效的(即使很奇怪,混合 2 种不同的 字段):
      % 如果 object.street2:
      ${(object.street or '-') |安全}
      % endif

      credits to Oliver Dony (more details)

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 2022-01-20
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 2015-03-30
        • 1970-01-01
        • 2020-03-23
        相关资源
        最近更新 更多