即使该键存在,我也会收到一条错误消息
def __init__(self):
self.client = MongoClient('localhost', 27017)
self.client.drop_database("exercise_database") # clear everything that was before
self.db = self.client.exercise_database # create database
self.exercises = self.db.exercises # create table in the database
def get_all(self):
return [{
'id': str(exercise['_id']),
'type': exercise['type'],
'calories': exercise['calories']
} for exercise in self.exercises.find()]
def add(self, exercise):
exercise = {key: exercise[key] for key in exercise}
exercise['calories'] = int(exercise['calories'])
self.exercises.insert_one(exercise)
return 200
def exercises():
if request.method == 'GET':
return jsonify(exerciseRepo.get_all())
elif request.method == 'POST':
print(request.form, file=sys.stderr)
return jsonify(exerciseRepo.add(request.form))
错误:
File "server.py", line 31, in exercises
return jsonify(exerciseRepo.add(request.form))
File "ExercisesRepository.py", line 24, in add
exercise['calories'] = int(exercise['calories'])
KeyError: 'calories'
127.0.0.1 - - [04/Jan/2020 22:08:40] "POST /exercises HTTP/1.1" 500 -
我检查了拼写,但似乎没问题,所以我不知道还有什么要更改的get方法有效(尝试过邮递员),但POST不起作用(也仅在邮递员中尝试过)服务器与pycharm(python)中的mongodb和Flask一起使用]
更改:
def get_all(self):
return [{
'id': str(exercise['_id']),
'type': exercise['type'],
'calories': exercise['calories']
} for exercise in self.exercises.find()]
收件人:
def get_all(self):
dict_to_return = {}
for exercise in self.exercises.find():
dict_to_return['id'] = str(exercise['_id'])
dict_to_return['type'] = str(exercise['type'])
try:
dict_to_return['calories'] = str(exercise['calories'])
except Exception as e:
print(e)
dict_to_return['calories'] = str(e)
return dict_to_return