使用Python和Flas创建mongodbacked restfulapi

2024-04-24 10:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在开发一个支持MongoDB的restfulapi和flask。。。但是,我用find_one()设置了一个区域搜索查询,但是,当我尝试使用find()将它变成一个包含多个结果的较大查询时,我在postman上得到以下错误:

UnboundLocalError: local variable 'output' referenced before assignment

这是有效的代码,但是它只从查询中返回一个文档:

^{pr2}$

一旦我试图更改以获得所有结果,使它find()就不起作用了

@app.route('/active_jobs/<zone>', methods = ['GET'])
def get_one_zone(zone):

ajobs = mongo.db.ajobs

q = ajobs.find({'zone' : zone})

output = {}

output = ({
'zone': q['zone'], 'jobdate' : q['jobdate'],
'jobtime' : q['jobtime'],'client': q['client'],
})

return jsonify({output})

Im是编程世界的新手,所以如果你能用一些简单的例子,那将是非常感谢的。在


Tags: client区域zoneflaskoutputmongodb错误find
2条回答

出于安全原因,不返回纯列表,建议返回带有列表的dict,如下所示:

{ 
  'data': [1,2,3,4]
}

jsonify会处理好的。在

顺便说一下,我已经为构建restfulapi构建了一个轻量级框架,使用的默认数据库引擎是mongodb,所以我想您可能会发现它很有用。代码如下:https://github.com/sebastiandev/peach

有一些循序渐进的例子。如果你还有任何疑问,请告诉我,我会尽力帮助你的。在

这可能是因为mongo中的find_One将只返回1个文档作为字典,而find将返回多个文档作为字典列表。jsonify不适用于如下所示的列表:How do I `jsonify` a list in Flask?。在

你可以用json.dumps文件相反,正如答案所示。在

相关问题 更多 >