4

我正在尝试编写一个基于 Express 的行程应用程序。Swig 是模板引擎。我对 Swig 的自动转义功能感到困惑。它究竟是做什么的?

Swig文档示例:

"Control auto-escaping of variable output from within your templates."

// myvar = '<foo>';
{% autoescape true %}{{ myvar }}{% endautoescape %}
// => <foo>
{% autoescape false %}{{ myvar }}{% endautoescape %}
// => <foo>

我的代码:

<script>

{% autoescape false %}
var all_hotels = {{ hotels | json }};
var all_restaurants = {{ restaurants | json }};
var all_things_to_do = {{ things_to_do | json }};

{% endautoescape %}

</script>

谢谢你。

4

1 回答 1

10

文档应如下所示:

"Control auto-escaping of variable output from within your templates."

// myvar = '<foo>';
{% autoescape true %}{{ myvar }}{% endautoescape %}
// => &lt;foo&gt;
{% autoescape false %}{{ myvar }}{% endautoescape %}
// => <foo>

因此,当 autoescape 为 时true,它将 HTML 转义变量内容。我认为这是 Swig 的默认设置。

由于您要呈现 JSON 变量,因此您的代码应该可以正常工作(关闭自动转义以防止对 JSON 内容进行 HTML 转义)。或者,您可以使用safe过滤器:

var all_hotels = {{ hotels | safe | json }};
var all_restaurants = {{ restaurants | safe | json }};
...
于 2014-02-16T08:34:29.923 回答