从javascript发送两个变量到python

时间:2019-05-18 19:49:16

标签: javascript python flask

这是我们从javascript向Python发送名为“ sample”的变量的方式。

JS代码:

  function buildCharts(sample) {
  var url = `/samples/${sample}`;
  d3.json(url).then(function(data){
    // send data retrived from my url to two plotting functions
    piechart(data);
    bubblechart(data);
  });
};

Python:

@app.route("/samples/<sample>")
def samples(sample):
    """Return `otu_ids`, `otu_labels`,and `sample_values`."""
    stmt = db.session.query(Samples).statement
    df = pd.read_sql_query(stmt, db.session.bind)

    # Filter the data based on the sample number and
    # only keep rows with values above 1
    sample_data = df.loc[df[sample] > 1, ["otu_id", "otu_label", sample]]
    # Format the data to send as json
    data = {
        "otu_ids": sample_data.otu_id.values.tolist(),
        "sample_values": sample_data[sample].values.tolist(),
        "otu_labels": sample_data.otu_label.tolist(),
    }
    return jsonify(data)

Python使用检索到的变量进行查询,并将数据返回给javascript。我们可以发送多个变量吗?我有两种形式,当用户填写它时,我都希望将这两个变量都发送给python来执行某些活动,然后将其发送回javascript,以便绘制成html。

1 个答案:

答案 0 :(得分:0)

发送完两个变量后,就不必真正发送两个变量了。

通过JavaScript,只需创建一个对象,例如:

let myVar = {position: "data scientist", location: "Paris"};

通过任何方便的方法(例如XMLHttpRequest)发送到Python应用程序。在Python方面,您可以使用:

import json

#Receive the request by any means or method
my_var = json.loads(object_in_the_request) #object_in_the_request is JSON-like
position = my_var["position"] #data scientist
location = my_var["location"] #location

请记住:my_var(Python)类似于dict,因此您可以通过键(my_var["location"])访问其字段。另一方面,myVar(JavaScript)是一个对象,因此您可以通过myVar.location访问其属性。

当然,这个例子很简单。我没有考虑例外情况和细节问题,但我想您已经明白了。

最重要的是,此解决方案在变量(或字段)数量方面非常灵活,因此添加第三个属性与添加第四个属性一样容易。

希望有帮助