在客户端和Flask之间传递数据

时间:2015-08-23 23:11:49

标签: python ajax flask

我有一个Flask应用程序,我有一个收集一些用户输入的表单。然后,该输入作为JSON数据通过AJAX调用传递给我的Python脚本中的函数。

此函数调用API,获取一些新数据,然后返回重定向URL到AJAX调用。成功后,AJAX会使用window.location.href重定向到这个新模板。

我尝试将第一个视图函数the_search传递给第二个视图函数,然后渲染相应的模板,但不幸的是,这并没有成功。我也尝试将数据设置为会话变量,然后在模板中访问它,但这似乎也不起作用。

我的问题

如何在重定向模板results.html中访问变量'response'?

AJAX脚本

...
$.ajax({
  type: 'POST',
  url: '/the_search',
  data: JSON.stringify(data),
  contentType: "application/json; charset=utf-8",
  success: function(data, status) {
    window.location.href = data['website'];
  },
  error: function() {
      console.log('there was an error');
  }
})
...

Python脚本

@app.route('/the_search', methods=("POST", 'GET'))
def the_search():
  data = json.loads(request.data)
  lat = data['latitude']
  longitude = data['longitude']

  response = unirest.get("https://zilyo.p.mashape.com/search?latitude={}&longitude={}".format(lat, longitude),
    headers={
      "X-Mashape-Key": "k6HBYxvy88mshQ6Yg1xPVuv7Vg9Np1GZj7IjsnPxploykdpaHA",
      "Accept": "application/json"})

  session['search_results'] = response.body

  return jsonify({'website': '/results'}), 200


@app.route('/results', methods=('POST', 'GET'))
def results():
  #How can I pass the_search view function to here while still having access to the response data

  print session['search_results']

  return render_template('results.html')

0 个答案:

没有答案