6

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)
4

2 に答える 2

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"
于 2012-08-27T07:59:47.757 に答える
1

nフィルタを試してください。ドキュメントによると、エスケープ(またはその他のデフォルトのフィルタリング)を無効にします。

${field_name | n}

更新:申し訳ありませんが、引用符が式の周りにあることに気づきませんでした。そして今、それは非常に奇妙に見えます...

于 2012-08-27T07:48:52.210 に答える