使用多个文件时替换了Pystache html字符

时间:2016-02-22 13:42:04

标签: python html python-3.x pystache

我正在使用pystache(在Python 3.4上)来模拟通过电子邮件发送的HTML文件。 我有一个main.mustache文件,其中一些标记意味着被其他.mustache文件的内容替换。 所以我有这样的东西(简化版):

main.mustache:

<body>
<table>
.......
{{some_params}}
....
</table>

{{special_warning}}
</body>

{{special_warning}}标记仅在某些条件下使用,来自文件special_warning.mustache

<table>
  <tbody>
  <tr>
    <td>
      <h4 style="margin: 0; margin-bottom: 20px;"
        Well, this is odd. please re-do last action.
      </h4>
    </td>
  </tr>
  </tbody>
</table>

在我的python脚本中,我做了:

special_message = ''
if <some condition>:
    special_message = renderer.render_path('special_warning.mustache', {})

proc_templ = renderer.render_path('main.mustache', {'special_warning': special_message , <the other params>})

我得到的结果是main.mustache部分的正确消息,但来自special_warning.mustache的部分是HTML编码的:

<body>
<table>
.......
some_params
....
</table>

&lt;table&gt;
  &lt;tbody&gt;
  ....
  &lt;/tbody&gt;
&lt;/table&gt;

</body>

我有什么想法可以阻止这种HTML编码?是python string这样做,还是pystache渲染呢?

1 个答案:

答案 0 :(得分:1)

使用三重括号可以避免html转义。所以我的main.mustache应该是:

<body>
<table>
.......
{{some_params}}
....
</table>

{{{special_warning}}}
</body>