Flask-Json如何将多行作为json对象返回

时间:2017-08-05 14:30:06

标签: jquery json ajax flask flask-sqlalchemy

我有一个用户列,我试图通过json和ajax在html文件上输出所有数据。 我能够从单行返回多个列。 但我无法弄清楚如何返回并调用多行。

这是我的代码以及我尝试过的一些注释事项。

@app.route('/test', methods=['POST', 'GET'])
def test():
    #thisworks
    works = user.query.filter_by(name = 'foo').first()
    return jsonify(name = works.name, id = works.id)

    #BELOW LINES DONT WORK
    #st = user.query.all()
    #for i in st:
    #jsonify(id = st.id[i] , name = st.username[i])

另外,我是否必须使用for循环或字典中的字典在jquery中调用它。?

请帮帮我 感谢。

2 个答案:

答案 0 :(得分:1)

这里的想法是在jsonify之前将所需的所有数据放在列表/数组中。 使用您的示例:

st = user.query.all()
all_users = [{'name':user.name,'id':user.id} for user in st]
return jsonify(all_users)

希望这有帮助

要在jquery中使用结果,你可以做一些像这样的事情

$.get('mysite.com/users').then(function(response) { // ajax to get users
   users = response;  // save to variable
   $.each(users, function(key, val) {           // iterate over result
      console.log(val.id);
      console.log(val.name)
   });
});

答案 1 :(得分:0)

看起来您想要构建数据结构,然后使用jsonify。类似的东西:

# create a list of user ids and names
user_data = []
for user in user.query.all():
    user_data.append({
      'id': user.id,
      'name': user.name,
    })
 return jsonify(user_data)

有几种方法可以创建该数据结构,但这似乎是一个明显的例子。