没有逃脱的棘手(未转义)

问题描述 投票:6回答:2

我正在使用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'
python django templating pystache
2个回答
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


0
投票

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

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

您在模板中没有三边括号的情况下获得了未转义的值。

请参见docs类的Rendered

© www.soinside.com 2019 - 2024. All rights reserved.