python - 蟒蛇 | 检查 dict{} 项目是否在 list[] 中
问题描述
尝试根据来自 api
plant_list[]
的 有效负载检查内存列表。JSON
如果传入的有效载荷的字典 在应该触发的
name
内部匹配。plant_list
if
相反,我的脚本只返回
null
请指出我的错误。
通过 JSON
api 调用发送的是:
{ "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)
解决方案
您正在将 plant_list 设置为全局。如果你想在一个类中使用它,你应该在你的类的函数中定义它:
plant_list = []
class Plant(Resource):
....
def post(self, name):
global plant_list
....
不知道为什么需要它作为全局变量。也许你想要:
class Plant(Resource):
plant_list = []
....
def post(self, name):
....
推荐阅读
- java - hasItems 带有可迭代包含的断言错误
- kubernetes - Azure Kubernetes NGINX 入口重定向到 www 停止工作
- ruby-on-rails - Rails API忘记密码未呈现视图
- search - 如何使用 nominatim.openstreetmap.org/search 将结果限制在 1 公里半径范围内?
- apache-spark - Apache Zeppelin 笔记本部署
- mysql - Mysql计算包含文本的同一字段中的时间戳之间的时间差?
- fluent - 处理嵌套期货的最佳方法是什么?
- c# - 我的 CSR inf 代有什么问题?给出 Keyspec 错误
- html - 无法预测地为 png 文件获取类型“文本/纯文本”
- laravel - 如何更改 Laravel 中枢轴上时间戳的日期格式?