4

私はBottleをWebサーバーとして使用しており、Pythonリストをjavascriptに渡す必要があります。

{{myList}}だけを実行している場合、Bottleはリスト内の文字列の単一引用符をエスケープし、' JSとして表示します。これにより、取得した文字列に満足できなくなります。

私はなんとか解決策を見つけることができましたが、それは最適なものではないと思います。

var tempList = '{{eval(myList)}}'.replace(/'/g, "'");
var myNewList = eval(tempList);

これを行うためのより良い方法はありますか?

upd:見つけたソリューションを「回答」セクションに移動しました。

4

3 に答える 3

5

jsonを使い始めました(Python3のjson_dumps、simplejsonはインストールされません)が、ボトルはまだ一重引用符をエスケープしていました。ボトルのマニュアルで、感嘆符を使用してエスケープをスキップできることがわかり、コードを変更しました。

var myNewList = {{!myList}};
于 2012-07-12T20:59:05.143 に答える
2

代わりにjsonモジュールを使用してください。結局、有効なJavaScript式を出力します。

JSON(JavaScript Object Notation)は、JavaScript構文のサブセットです(ECMA-262第3版)[…]

簡単な例:

>>> import json
>>> json.dumps([1, 2, 'foo', 'bar'])
'[1, 2, "foo", "bar"]'

それをテンプレートに直接入れてください。私はこれを常に使用して、生成されたWebページに有効なJavaScriptデータ構造を常に配置しています。

于 2012-07-11T07:26:19.447 に答える
0

私はBottleに精通していませんが、Djangoを使用するときに同じ問題が発生します。私の解決策は、PythonリストをJSON形式にダンプすることです。JavascriptはJSONに満足しています。

myList = [1、2、3、'string'、 "&apm;"、'"']

次にsimplejson.dumps(myList)、Webページに戻ります。jsの場合:

var myList = <dumped-literal-JSON-string>

注:ダンプされたJSON値を引用符で囲まないでください。

于 2012-07-11T07:31:24.997 に答える