我有一個類可以通過幾種方法處理資料庫中的更改,在每種方法中,我都對資料進行某種驗證以檢查它是否可以接受,如果不可以,它將回傳jsonfiy帶有錯誤和狀態代碼的回應:
class ChangeData():
# more code...
def change_data(self, new_data):
if new_data not valid:
print({"error": "first name can only contain latters"})# will print if not valid
return jsonify({"error":
"can't change the data"}), 400
else:
#change the data
我期待如果資料無效,它將回傳到前端 jsonfiy 錯誤訊息,但是盡管列印作業前端沒有收到 jsonfiy 錯誤,但無論資料是否有效,它都會收到 jsonfiy 成功訊息。
@app.route("/change", methods=["POST"])
def change_user_data():
data = request.form
update_data = ChangeData()
new_data = data.get("new_data", None)
if new_data:
update_data.change_data(new_data)
return jsonfiy({"sucsees": "the data as been changed"}), 200
我可以解決它的一種方法是,如果資料無效并且如果有效,False則從該方法回傳,并基于此從“/change”路由回傳一個jsonfiy,但我不喜歡這個解決方案,提前致謝!change_dataTrue
uj5u.com熱心網友回復:
- 您的呼叫代碼不期望回傳,因此您的錯誤不會在從函式回傳時被“捕獲”
if new_data:
update_data.change_data(new_data)
- 即使您的呼叫代碼期望回傳值,您也不會在將輸出回傳給客戶端之前檢查是否發生錯誤。你的代碼只是做
return jsonfiy({"success": "the data as been changed"}), 200
- 一種可能的解決方案是將呼叫代碼放在 try except 塊中,并從被呼叫者那里引發例外。像這樣的東西(這是一個粗略的輪廓,你必須充實它)
class ChangeData():
def change_data(self, new_data):
if new_data not valid:
print({"error": "first name can only contain letters"})
raise Exception("first name can only contain letters")
@app.route("/change", methods=["POST"])
def change_user_data():
data = request.form
update_data = ChangeData()
new_data = data.get("new_data", None)
try:
if new_data:
update_data.change_data(new_data)
return jsonfiy({"sucsees": "the data as been changed"}), 200
except:
return jsonify({"error": "can't change the data"}), 400
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453612.html
