我需要将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)
最佳答案
我认为您需要在表达式中包括引号。您可以使用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"
关于python - Pyramid 内的Mako逃逸问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12137421/