在Flask / JavaScript中返回两个回复

时间:2016-09-13 01:00:24

标签: javascript python json

我有一个Flask / JavaScript应用程序,我在其中输入表单的输入并将它们传递给Flask应用程序以从GoogleMaps API检索距离信息,然后将生成的JSON返回给JavaScript。这对单个工作正常原点/目的地的实例。

我想收到两个源/目标输入并返回我的JavaScript,但无法弄清楚如何做到这一点。我还在学习,但我觉得我不能简单地在一个函数中返回两个值,所以我希望有人可以看看我的内容,并告诉我最好的方法是什么将两者的JSON都恢复为JavaScript。

@app.route("/", methods=['GET', 'POST'])
def home():
    if request.method == 'POST':

        # form inputs
        origin = request.form.get('origin')
        destination = request.form.get('destination')
        current_home = request.form.get('current_home')
        future_home = request.form.get('future_home')

        # current traffic conditions set to now
        departure = int(time.time())

        # params we pass to the url
        current_params = {
            'origins': origin,
            'destinations': destination,
            'mode':'driving',
            'units':'imperial',
            'departure_time' : departure,
            'traffic_model':'best_guess',
            'avoid':'tolls'
        }

        future_params = {
            'origins': future_home,
            'destinations': destination,
            'mode':'driving',
            'units':'imperial',
            'departure_time' : departure,
            'traffic_model':'best_guess',
            'avoid':'tolls'
        }

        # api call
        current_url = 'https://maps.googleapis.com/maps/api/distancematrix/json?'+ urllib.urlencode(current_params)
        future_url =  'https://maps.googleapis.com/maps/api/distancematrix/json?'+ urllib.urlencode(future_params)

        current_response = requests.get(current_url)
        future_response = requests.get(future_url)

        # return json
        return jsonify(current_response.json())
        return jsonify(future_response.json())
    return render_template('index.html')

if __name__ == "__main__":
    app.run(debug=True)

1 个答案:

答案 0 :(得分:1)

您需要将两个值都包装在dict中,然后返回dict。

payload = {
    "current_response": current_response,
    "future_response": future_response
}

return jsonify(payload)