2017-03-06 70 views
3

我目前正在学习使用Flask作为python后端的d3.js,并且在this example后面显示了在同一页上使用不同数据集的两个简单图表。Flags + d3.js:将多个数据集传递给html

我在尝试进行以下修改:而不是使用CSV,我想从python后端传递json文件(该示例只是从两个csv文件中读取数据)。我该如何传递2个json数据集?我可以通过一个如下:

Python的后端

import flask... 

app = flask.Flask(__name__) 

@app.route("/") 
def index(): 
    return flask.render_template("index.html") 

@app.route("/data") 
def data(): 
    x = [1, 2, 3, 4, 5] 
    y = [1, 2, 3, 4, 5] 
    js = [{"x":x[i], "y":y[i]} for i in range(len(x))] 

    return json.dumps(js) 

的index.html

<script> 
d3.json("/data", function(data) ...) 
</script> 

我试图写另一个Python功能,像def data_bar返回一个单独的JSON数据集,但无法读取。从理论上说,我能通过在一个JSON数据集两个数据集,如:

x = [1,2,3,4,5] 
y = [1,2,3,4,5] 
x1 = [10,20,30] 
y1 = [40,50,60] 

但是,如果所述第一组的结构域(x和y)和第二组(X1和Y1)AREN”此遇到的问题同样的。例如第一组可以是“student_name”和“grade”,第二组可以是“class_name”和“average_grade”。

回答

0

呈现在通过一组数据:

return render_template("result.html",resultVarInHtml = myData) 

在通过多个数据集渲染:

return render_template("result.html",resultVarInHtml = myData, resultVarInHtml2 = myData2) 

现在,当我打开result.html

我可以使用此代码显示我的数据(假设一个关键值字典对象,但你明白了)

results.html

<!doctype html> 
<html> 
    <body> 
    <p>First Data Set</p> 
     <table border = 1> 
     {% for key, value in resultVarInHtml.iteritems() %} 

      <tr> 
       <th> {{ key }} </th> 
       <td> {{ value }} </td> 
      </tr> 

     {% endfor %} 
     </table> 
     <p>2nd Data Set</p> 
     <table border = 1> 
     {% for key, value in resultVarInHtml2.iteritems() %} 

      <tr> 
       <th> {{ key }} </th> 
       <td> {{ value }} </td> 
      </tr> 

     {% endfor %} 
     </table> 
    </body> 
</html> 

而且你会得到一个合适的表格,队友。