drn*_*gis 6 python escaping mako pyramid
我需要将javascript函数放到mako模板中.这个函数的第一个参数是string,所以我在*.mako文件中写入(dict(field_name ='geom')):
init_map(
'${field_name}'
);
Run Code Online (Sandbox Code Playgroud)
但是,当我看到我的HTML页面时,它就像:
init_map(
'geom'
)
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何禁用转义?
渲染执行以下方式:
from pyramid.renderers import render
render('georenderer/map.mako', template_args)
Run Code Online (Sandbox Code Playgroud)
我想你需要在你的表达中包含引号.您可以使用该json模块输出有效的JavaScript文字:
dict(field_name=json.dumps('geom'))
Run Code Online (Sandbox Code Playgroud)
并在您的模板中:
init_map(
${field_name | n}
);
Run Code Online (Sandbox Code Playgroud)
然后由.dumps()函数生成引号,| n过滤器确保它们不被转义; 你已经使你的价值观JavaScript安全,你也不需要HTML安全.
额外的优点是模块也会转义JavaScript值中的任何引号,并正确处理unicode:
>>> import json
>>> print json.dumps(u'Quotes and unicode: " \u00d8')
"Quotes and unicode: \" \u00d8"
Run Code Online (Sandbox Code Playgroud)