Nunjucks如何让HTML通过一个set块

How to allow HTML to pass through a set block with Nunjucks

我很高兴看到我们可以 apply a block assignment for set 通过 Nunjucks。允许 HTML 通过这种方法传递的正确方法是什么?

我想从我的初始 nunjucks 文件中执行以下操作:

{% set demoSetBlock %}
<div class="mClass">
  <p>a header value in a nunjucks set block</p>
</div>
{% endset %}

然后我想像这样将它调用到我的 nunjucks 模板中...

{{demoSetBlock}}

但是...它会在网页上打印内容以及 HTML 标记,就像这样...

<div class="mClass"> <p>a header value in a nunjucks set block</p> </div>

我们如何渲染它以使其显示为...

a header value in a nunjucks set block

不确定这是否是解决这种情况的官方方法,但现在对我来说似乎有效的是在调用 set 块时使用 |safe 作为属性,如下所示:

{{demoSetBlock|safe}}

因此,我的 HTML 在浏览器上完美呈现。

这在某些情况下很有用

  • 当我不想依赖宏时。
  • 当我想依赖 set 作为工具组件来定义数据并通过模板的各个部分传递数据时。
  • 我有其他包含文件(即 _include-header.njk_include-footer.njk)直接附加到我的主模板文件。然后我可以对其中一个文件使用 set block。