2016-09-04 5 views
0

Im в настоящее время работает над поддерживаемым MongoDB RESTFUL API с флягой ... Однако Ive получил запрос на поиск зон, настроенный с помощью find_one(), однако, как только я попытаюсь сделать это больше запросов с несколькими результатами с помощью функции поиска(), я получаю следующее сообщение об ошибке на почтальона:Создание API RESTFul с поддержкой MongoDB с Python и Flask

UnboundLocalError: local variable 'output' referenced before assignment 

это код, который работает, однако он возвращает только один документ из запроса:

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

ajobs = mongo.db.ajobs 

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

output = {} 

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

return jsonify({output}) 

как только я пытаюсь chage, чтобы получить все результаты, чтобы найти() он не работает

@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}) 

Ps. Im полный новичок в мире программирования, поэтому, если бы вы могли использовать простые примеры, которые были бы высоко оценены.

ответ

0

Возможно, это потому, что «find_One» в mongo вернет только 1 документ в качестве словаря, тогда как find вернет несколько документов в виде списка словарей. jsonify не работает в списке, как показано здесь: How do I `jsonify` a list in Flask?.

Вы можете использовать json.dumps вместо этого, как там предлагают ответы.

0

По соображениям безопасности вместо возвращения простого списка, рекомендуются вернуть Dict список, что-то вроде:

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

jsonify будет обрабатывать это просто отлично.

Кстати, я построил облегченный фреймворк для построения спокойной apis, а используемый по умолчанию движок базы данных - mongodb, поэтому я думаю, что вы, вероятно, найдете его полезным. Вот код: https://github.com/sebastiandev/peach

Для этого есть несколько пошаговых примеров. Если у вас есть другие сомнения, сообщите мне, и я постараюсь вам помочь.

Смежные вопросы