2017-05-18 1 views
1

현재 일부 데이터를 표시하는 작은 웹 응용 프로그램을 작성 중이며 현재 dict으로 저장되어 있습니다. 내가 템플릿에 전달해야하지만 내가 자바 스크립트 오류가 계속 :사전을 템플릿에 전달

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.

내가 사용 파이썬 코드는

<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 사전에 변환한다. 이런 식으로 브라우저의 자바 스크립트는 데이터를 객체로 읽을 수 있습니다.

다음으로 템플릿의 변수가 name이므로 템플릿 이름을 인수로로드해야한다고 생각합니다. 전반적으로 다음 사항은 귀하의 목적에 부합해야합니다.

import json 
def hello(): 
    .... 
    my_data = {"name": "my name", "parent": "null", "children": "children"} 
    return template('tree', name=json.dumps(my_data)) 
관련 문제