2017-05-18 7 views
1

私は現在、dictとして保存されているデータを表示するための小さなWebアプリケーションを作成しています。私はテンプレートにそれを渡す必要があるが、私はjavascriptのエラーを取得し続ける:辞書をテンプレートに渡す

from bottle import run 
from bottle import template 

app = Bottle() 


@app.route("/hello") 
def hello(): 
    # .... code to read and clean the data 
    my_data = {"name": "my name", "parent": "null", "children": "children"} 
    return template('tree', **my_data) 


run(app, host='localhost', port=8080, debug=True) 

との.tplファイルは次のとおりです:Unexpected identifier 'name'. Expected ';' after variable declaration.

私が使用しているPythonのコードがある

<body> 

<!-- load the d3.js library --> 
<script src="http://d3js.org/d3.v3.min.js"></script> 

<script> 

var treeData = {{!name}}; 

//some javascript to display the data 

</script> 
</body> 
</html> 

dict値が文字列として渡されるようにするにはどうすればよいですか、またはjsによって表示を行うために何らかの方法で使用できますか?

理想的JSによって使用されるデータの形式は次のようになります

var treeData = [{"name": "Top Level", 
"parent": "null", 
"children": [ 
    { 
    "name": "Level 2: A", 
    "parent": "Top Level", 
    "children":}]}] 

答えて

2

第JSON辞書を変換します。このようにして、ブラウザ上のJavaScriptはオブジェクトとしてデータを読み取ることができます。

次に、テンプレートの変数がnameなので、引数として名前をつけてテンプレートを読み込むべきだと思います。だから全体的にあなたの最後に次のように動作するはずです

import json 
def hello(): 
    .... 
    my_data = {"name": "my name", "parent": "null", "children": "children"} 
    return template('tree', name=json.dumps(my_data)) 
関連する問題