Javascript 阻止Nunjuck转义HTML

Javascript 阻止Nunjuck转义HTML,javascript,template-engine,nunjucks,Javascript,Template Engine,Nunjucks,我有一个comments AJAX调用,它返回已发布评论的数据,我还内置了@ention功能,服务器端正在处理@entions,并对所提到的用户执行str_replace,在响应中用a标记替换他们的姓名,例如: { data: { comment: "<a href=\"profile/derp\">Username</a> hey what's up" } } { 数据:{ 评论:“嗨,怎么了?” } } 然而,我似乎在文档中找不到如何允许N

我有一个comments AJAX调用,它返回已发布评论的数据,我还内置了@ention功能,服务器端正在处理@entions,并对所提到的用户执行
str_replace
,在响应中用a标记替换他们的姓名,例如:

{
   data: {
      comment: "<a href=\"profile/derp\">Username</a> hey what's up"
   }
}
{
数据:{
评论:“嗨,怎么了?”
}
}
然而,我似乎在文档中找不到如何允许Nunjuck将其打印为实际的HTML,它将其转义并显示代码,而不是让它成为真正的a标记


有人知道我如何允许它被打印成实际的a标签吗?

好的,所以在我发布这篇文章后,我几乎立刻找到了答案!对于其他人来说,这只是一个简单的问题;在打印变量的模板中添加安全过滤器,它将禁用自动转义

{{ comment.content|safe }}

虽然这意味着它很脆弱,所以一定要在服务器端添加你的保护。

你可以考虑传递评论的元数据,让模板创建HTML:

<p>
  <a href="{{ comment.user.url }}">{{ comment.user.name }}</a> {{ comment.text }}
</p>

您还可以使用以下方法避免全局转义:

nunjucks.configure({ autoescape: false });

感谢您的建议,但问题是模板事先不知道是否会有链接,因为只有在有提及的情况下才会添加此链接,例如可以在注释中添加。@AndréFigueira您可以添加条件语句。尽管您几乎不想这样做。这让我很吃惊,因为当我最初看到过滤器时,我以为正好相反——保险箱可以逃出HTML。你救了我:)
nunjucks.configure({ autoescape: false });