【发布时间】:2020-08-03 20:31:49
【问题描述】:
-
尝试检查内存列表,
plant_list[]与来自 api 的JSON有效负载。 -
如果传入有效负载的字典
name与plant_list内部匹配,则if应该会触发。 -
相反,我的脚本只返回
null请指出我的错误。
通过 api 调用发送的JSON 是:{ "name":"swizz", "days": "7", "price": 2.00 }
源代码
from flask import Flask, request
from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
@app.route('/', methods=['GET', 'POST'])
def home():
return 'Tiny'
plant_list = []
class Plant(Resource):
def get(self, name):
return {'Name':name}, 200
def post(self, name):
payload = request.get_json()
for x in range(0, len(plant_list)):
if payload['name'] == plant_list[x]['name']:
return {'message': f'''Item {payload['name']} already stored in database.'''}
else:
plant_list.append(payload)
return plant_list, 201
api.add_resource(Plant, '/plant/<string:name>')
if __name__ == '__main__':
app.run(port=9004, debug=True)
【问题讨论】:
-
return plant_list, 201的缩进是否正确?似乎它应该是不缩进的 -
plant_list始终为空,并且您的 for 循环永远不会执行。此外,您在迭代列表时正在更改列表 - 这通常是个坏主意。 -
这对您的
null问题没有帮助,但为了提高性能,我会将plant_list更改为由name键入的dict。
标签: python python-3.x flask