[英]KeyError in Flask Python
您好,我在嘗試 GET 或對我的 Pyhton Flask 數據執行任何操作時在“評論”中收到類型為 KeyError 的錯誤。
這是我的 app.py
from flask import Flask, jsonify, make_response, request
app = Flask(__name__)
businesses = [
{
"id" : 1,
"name" : "Pizza Mountaint",
"town" : "Madrid",
"rating" : 5,
"revivews" : []
},
{
"id" : 2,
"name" : "Wine Lake",
"town" : "London",
"rating" : 4,
"revivews" : []
},
{
"id" : 3,
"name" : "Burger Town",
"town" : "Paris",
"rating" : 1,
"revivews" : []
},
]
@app.route("/api/v1.0/businesses", methods=["GET"])
def show_all_businesses():
return make_response(jsonify( businesses))
@app.route("/api/v1.0/businesses/<int:id>", methods=["GET"])
def show_one_business(id):
data_to_return = [ business for business in businesses if business["id"] == id ]
return make_response( jsonify( data_to_return[0]), 200)
@app.route("/api/v1.0/businesses", methods=["POST"])
def add_business():
next_id = businesses[-1]["id"] + 1
new_business = {
"id" : next_id,
"name" : request.form["name"],
"town" : request.form["town"],
"rating" : request.form["rating"],
"reviews" : []
}
businesses.append(new_business)
return make_response( jsonify( new_business), 201)
@app.route("/api/v1.0/businesses/<int:id>", methods=["PUT"])
def edit_business(id):
for business in businesses:
if business["id"] == id:
business["name"] = request.form["name"]
business["town"] = request.form["town"]
business["rating"] = request.form["rating"]
break
return make_response( jsonify( business), 200)
@app.route("/api/v1.0/businesses/<int:id>", methods=["DELETE"])
def delete_business(id):
for business in businesses:
if business["id"] == id:
businesses.remove(business)
break
return make_response( jsonify ( {} ), 200)
@app.route("/api/v1.0/businesses/<int:id>/reviews", methods=["GET"])
def fetch_all_reviews(id):
for business in businesses:
if business["id"] == id:
break
return make_response( jsonify( business["reviews"]), 200)
@app.route("/api/v1.0/businesses/<int:id>/reviews", methods=["POST"])
def add_new_review(id):
for business in businesses:
if business["id"] == id:
if len(business ["reviews"]) == 0:
new_review_id = 1
else:
new_review_id = business["reviews"][-1]["id"] + 1
new_review = {
"id" : new_review_id,
"username" : request.form["username"],
"comment" : request.form["comment"],
"stars" : request.form["stars"]
}
business["reviews"].append(new_review)
break
return make_response (jsonify(new_review), 201)
@app.route("/api/v1.0/businesses/<int:id>/reviews/<int:review_id>", methods=["GET"])
def fetch_one_review(id, review_id):
for business in businesses:
if business["id"] == id:
for review in business["reviews"]:
if review["id"] == review_id:
break
break
return make_response( jsonify ( review ), 200)
if __name__ == "__main__":
app.run(debug = True)
這是代碼,錯誤如下所示: Desktop\FSSD\app.py", line 76, in fetch_all_reviews return make_response(jsonify(business["reviews"]), 200) KeyError: 'reviews'
當我嘗試使用瀏覽器上的 localhost 訪問數據或僅在該地址上的 postman 中獲取數據時,就會發生這種情況。
http://localhost:5000/api/v1.0/businesses/ 通過顯示結果來工作,但是當嘗試點擊 http://localhost:5000/api/v1.0/businesses/1/reviews 我收到 KeyError 時(jsonify(業務[“評論”]),200)
您的businesses
列表中有錯字
businesses = [
{
"id" : 1,
"name" : "Pizza Mountaint",
"town" : "Madrid",
"rating" : 5,
"revivews" : []
},
{
"id" : 2,
"name" : "Wine Lake",
"town" : "London",
"rating" : 4,
"revivews" : []
},
{
"id" : 3,
"name" : "Burger Town",
"town" : "Paris",
"rating" : 1,
"revivews" : []
},
]
每個字典中的revivews
應該是reviews
然后business["reviews"]
會正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.