我需要将javascript函数放到mako模板中。这个函数的第一个参数是字符串,所以我写入我的* .mako文件(dict(field_name ='geom')):
init_map(
'${field_name}'
);
但是当我看到我的html页面时,它就像是:
init_map(
'geom'
)
在这种情况下如何禁用转义?
渲染执行以下方式:
from pyramid.renderers import render
render('georenderer/map.mako', template_args)
答案 0 :(得分:5)
我认为你需要在你的表达中包含引号。您可以使用json
模块输出有效的JavaScript文字:
dict(field_name=json.dumps('geom'))
并在您的模板中:
init_map(
${field_name | n}
);
引号由.dumps()
函数生成,| n
过滤器确保它们不会被转义;你已经使你的价值观JavaScript安全,你也不需要HTML安全。
附加的优点是模块也会转义JavaScript值中的任何引号,并正确处理unicode:
>>> import json
>>> print json.dumps(u'Quotes and unicode: " \u00d8')
"Quotes and unicode: \" \u00d8"
答案 1 :(得分:1)
尝试n
过滤器。根据{{3}},它会禁用转义(或任何其他默认过滤):
${field_name | n}
更新:抱歉,我没注意到引号是围绕表达式。现在看起来很奇怪......