4

Jinja2 (Python を使用) から Javascript に辞書を渡すには? Python に辞書があり、テンプレートをレンダリングするときに、Javascript でその辞書を使用する必要があるため、Python から渡しました

template = JINJA_ENVIRONMENT.get_template('sm.html')
self.response.write(template.render(values=values))

しかし、それらをhtmlページ内のJavascript変数に保存する方法。

4

2 に答える 2

5

モジュールを使用してjson、Python データを JSON データに変換します。JSON は JavaScript *のサブセットであり、JavaScript リテラルとして問題なく機能します。

import json

js_value = json.dumps(python_value)

js_valueテンプレートでレンダリングします。

JSON データもHTML セーフにする必要がある場合は、いくつかの置換を追加する必要があります。

js_value = (json.dumps(python_value)
    .replace(u'<', u'\\u003c')
    .replace(u'>', u'\\u003e')
    .replace(u'&', u'\\u0026')
    .replace(u"'", u'\\u0027'))

* JSON では、JavaScript リテラルに含めることができないU+2028 および U+2029 文字json.dumps()を使用できますが、関数はデフォルトですべての非 ASCII コードポイントをエスケープするため、無効ensure_asciiにしない限り問題ありません。

于 2013-11-10T00:38:49.810 に答える
1

Jsonとして保存します。これは JavaScript のネイティブ形式であるため、変数に直接渡すことができます。

于 2013-11-10T00:38:33.783 に答える