Python Flask - request.json返回None Type而不是json dictionary

时间:2017-05-25 05:04:47

标签: python json flask

我正在编写一个非常简单的演示webapp,我似乎无法使用 ajax js 中的json对象传递给 python >

我已经尝试了很多人提出类似问题的建议,例如使用.get_json()代替.json,在javascript中不使用JSON.stringify传递对象等

知道我在这里缺少什么作品吗?

的Javascript

var run_method = function(){

  var data1 = {"word":"hello"}
  console.log("Before " + data1);
  $.ajax({
      url : "/examplemethod",
      type : "POST",
      data : data1//JSON.stringify(data1)
  })
  .done(function(data){
      var data = JSON.parse(data);
      console.log(data);

  });
}

的Python

@app.route("/examplemethod", methods=['POST', 'GET'])
def example_method():
    global data
    if request.method == 'POST':
        print request
        data = request.json
        print "data", data
    return "after "+ data["word"]

我尝试过的每个变体都会产生 500错误

  

TypeError:'NoneType'对象没有属性' getitem '

显然,这是因为数据应该是dictionary/json,而不是None。但是如何让它作为字典返回呢?

1 个答案:

答案 0 :(得分:5)

因为您没有向烧瓶应用发送JSON(请参阅thisthis)。您当前的代码会生成标准的urlencoded表单帖子。这反过来会导致在request.form

中填充条目
 request.form.get('word')

根据上述Q& As中的指南切换到json帖子,以便通过request.json访问数据。