Python | проверьте, есть ли элемент dict {} в списке [] - PullRequest
0 голосов
/ 03 августа 2020
  • Попытка проверить список в памяти, plant_list[] против полезной нагрузки JSON из API.

  • Если dict входящей полезной нагрузки 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)

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вы устанавливаете plant_list как глобальный. Если вы хотите использовать это внутри класса, вы должны определить его внутри функции своего класса:

plant_list = []
class Plant(Resource):
    ....
    def post(self, name):
        global plant_list
        ....

Не уверен, зачем вам это нужно как глобальная переменная. Возможно, вы хотите:

class Plant(Resource):
    plant_list = []
    ....
    def post(self, name):
        ....
0 голосов
/ 03 августа 2020

Вы можете проверить ввод dict просто: if key_name in my_dict:... Итак, if "price" in plant_list[x]:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...