【发布时间】:2019-04-15 14:47:03
【问题描述】:
我不确定为什么会收到此类型错误:
文件“C:/Users/PycharmProjects/REST/app.py”,第 30 行,在 有效书籍对象 if(书中的“isbn”和书中的“name”和书中的“price”): TypeError:“NoneType”类型的参数不可迭代 127.0.0.1 - - [2018 年 11 月 12 日 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,这不是可迭代的。这就是错误消息的内容。 -
书籍类是不是必须要定义?? book 在代码中用作参数。
-
跟有没有上课没有关系。它与变量
book可以采用的值 (None) 相关,并且未在代码中处理。报错时检查request_data是否为空json文件。
标签: python-3.x pycharm flask-restful