我需要将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/

10-13 08:56