Pystache没有逃脱(未转义)

时间:2016-01-16 16:46:50

标签: python django templating pystache

我使用pystache渲染模板。当我渲染具有&的上下文变量时,我在输出中得到&。如何摆脱我需要的&& 。 同样的事情也发生在django模板上

>>> pystache.render('The URL {{URL}}', {'URL': 'http://google.com?a=3&b=3'})
u'The URL http://google.com?a=3&b=3'

2 个答案:

答案 0 :(得分:7)

为防止转义,请使用三重括号{{{var}}}

为防止转义,请使用三重括号,{{{URL}}}代替双括号{{URL}}

>>> pystache.render('The URL {{{URL}}}', {'URL': 'http://google.com?a=3&b=3'})
u'The URL http://google.com?a=3&b=3'

我已经在今天发布的最新版本0.5.4

上对此进行了测试

小胡子文档

由于Pystache是​​Python中的Mustache实现,因此可以使用Mustache的文档作为指针。

  

默认情况下,所有变量都是HTML转义的。如果你想回来   未转义的HTML,请使用三重胡须:{{{name}}}。

来源:https://mustache.github.io/mustache.5.html

答案 1 :(得分:2)

很久以前they've got such suggestion

escape类初始化程序有辅助Renderer选项。此选项接受对字符串进行操作的函数。默认值为cgi.escape(s, quote=True)

所以当你写:

import pystache
rend = pystache.Rendered(escape=lambda s: s)
rend.render(your_obj)

在模板中没有三边括号的情况下,您的值没有被逸出。

请参见Rendered类的docs