Я не уверен, почему я получаю эту ошибку TypeError:
Файл «C:/Users/PycharmProjects/REST/app.py», строка 30, в объекте valid_book_object if («isbn» в книге и «имя» в книге и «цена» в книге): TypeError: аргумент типа «NoneType» не повторяется 127.0.0.1 - - [12/ноября/2018 14:22:29] "POST /books HTTP/1.1" 500 -
Код:
from flask import Flask, jsonify, request
from test import *
app=Flask(__name__)
books=[
{'name': 'M',
'price': 6.75,
'isbn':123
},
{'name': 'G',
'price': 7.75,
'isbn':456
},
]
#GET /store
@app.route('/books') #first endpoint
def get_books():
return jsonify({'books': books})
# POST /books
#{'name': 'F',
#'price': 7.00,
#'isbn': 789
#},
def valid_book_object(book):
if ("isbn" in book and "name" in book and "price" in book):
return True
print("true")
else:
return False
print("false")
@app.route('/books', methods=['POST'])
def add_book():
#return jsonify(request.get_json())
request_data=request.get_json()
if(valid_book_object(request_data)):
books.insert(0, request_data)
return "True"
else:
return "False"
#GET /books/456
@app.route('/books/<int:isbn>') #second endpoint
def get_book_by_isbn(isbn):
return_value={}
for book in books:
if book["isbn"]==isbn:
return_value={
'name': book["name"],
'price':book["price"]
}
return jsonify(return_value)
app.run(port=5000)
book
имеет значениеNone
. Поэтому, когда вы пытаетесь выполнить"isbn" in book
, предполагается, чтоbook
является итерируемым, но вместо этого оказываетсяNone
, который не является итерируемым. Об этом говорит сообщение об ошибке. - person Eskapp   schedule 13.11.2018None
), которое может принимать переменнаяbook
и которое не обрабатывается в коде. Вы проверяли, является лиrequest_data
пустым файлом json или нет, когда возникает ошибка. - person Eskapp   schedule 13.11.2018