2017-10-24 1 views
0

나는 토네이도 웹 서버에서 자바 스크립트 핸즈 터블로 데이터를 이동하는 데 어려움을 겪고있다. 나는 문제가 내 데이터를 적절하게 이스케이프 또는 인코딩하는 것과 관련 있다고 생각하지만, 나는 그것을 이해할 수 없다.python의 Tornado 모듈을 통해 handsontable에서 사용자 정의 데이터 렌더링

다음은 파이썬 코드입니다. 목록 목록을 가져 와서 json으로 인코딩합니다.

class hot_index(tornado.web.RequestHandler): 
    def get(self): 
     self.render("hot_tradedata.html", 
        data=json.dumps([ 
          ['', 'Tesla', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'], 
          ['2017', 10, 11, 12, 13, 15, 16], 
          ['2018', 10, 11, 12, 13, 15, 16], 
          ['2019', 10, 11, 12, 13, 15, 16], 
          ['2020', 10, 11, 12, 13, 15, 16], 
          ['2021', 10, 11, 12, 13, 15, 16] 
           ]) 
        ) 

if __name__ == "__main__": 
    app = tornado.web.Application(
     handlers=[(r"/hot", hot_index)], 
     static_path=os.path.join(os.path.dirname(__file__), "static"), 
     template_path=os.path.join(os.path.dirname(__file__), "templates") 

여기 핸즈프렌 코드가 있습니다. 내 파이썬 함수에서 정의한 데이터로 테이블을 채우고 싶습니다.

<div id="example1"></div> 

<script> 
    var 
    data1 = {{data}}, 
    container1 = document.getElementById('example1'), 
    settings1 = { 
     data: data1 
    }, 
    hot1; 

    hot1 = new Handsontable(container1, settings1); 
    hot1.render(); 
</script> 

브라우저 콘솔은 데이터가 성공적으로 HTML 페이지에 전달 된 것을 나타냅니다 만, 자바 스크립트가 입력을 좋아하지 않는 것 같습니다. 나는 {{data}}를 다르게 벗어나야한다고 생각하니?

<body><div id="example1"></div> 
<script> 
var 
data1 = [[&quot;&quot;, &quot;Tesla&quot;, &quot;Nissan&quot;, &quot;Toyota&quot;, &quot;Honda&quot;, &quot;Mazda&quot;, &quot;Ford&quot;], [&quot;2017&quot;, 10, 11, 12, 13, 15, 16], [&quot;2018&quot;, 10, 11, 12, 13, 15, 16], [&quot;2019&quot;, 10, 11, 12, 13, 15, 16], [&quot;2020&quot;, 10, 11, 12, 13, 15, 16], [&quot;2021&quot;, 10, 11, 12, 13, 15, 16]], 
container1 = document.getElementById('example1'), 
settings1 = { 
data: data1 
}, 
hot1; 
hot1 = new Handsontable(container1, settings1); 
hot1.render(); 
</script> 

답변

1

기본적으로 토네이도 "autoescapes"는 따옴표입니다. 당신은 제대로 렌더링 할 객체 (안 JSON)을 통과 raw 기능

<div id="example1"></div> 

<script> 
    var 
    data1 = {% raw data %}, 
    ... 

다른 해결책이를 사용하여 렌더링 및 템플릿에 json_encode을 사용할 수 있습니다. 내가 생각하기에 더 깨끗해 보일지 모르겠지만 이미 json 문자열 (예 : 다른 소스에서받은 것) 또는 json이 크고 json의 다른 (더 빠른) 구현 (rapidjson, ujson과 같은)을 사용하려는 경우에는 그렇지 않습니다. json_encode보다.

추가 정보 http://www.tornadoweb.org/en/stable/template.html#syntax-reference

+0

어떤 방법이 가장 좋은 방법입니까? 어떤 방식 으로든 그렇게하는 것이 장단점이 있습니까? – rvictordelta

+0

답변을 수정했습니다. – kwarunek

관련 문제