return 来自烧瓶中 class 方法的 json 响应
return a json response from a class method in flask
我有一个 class 可以使用几种方法处理数据库中的更改,在每种方法中,我都对数据进行某种验证以检查它是否可以接受,如果不可以return 带有错误和状态代码的 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
我原以为如果数据无效,它会 return 向前端发送 jsonfiy 错误消息,但尽管打印有效,但前端没有收到 jsonfiy 错误,它收到 jsonfiy 成功消息 no重要的是数据是否有效。
@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
我可以解决它的一种方法是,如果数据无效,则通过 change_data
方法 returning False
,如果有效,则 True
,并且基于return 来自“/change”路线的 jsonfiy,但我不喜欢这个解决方案,提前致谢!
- 您的调用代码不期望 return,因此您的错误不是来自函数 return 的 'captured'
if new_data:
update_data.change_data(new_data)
- 即使您的调用代码需要一个 return 值,您也不会在 return 向客户端输出之前检查是否发生了错误。您的代码只是
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
我有一个 class 可以使用几种方法处理数据库中的更改,在每种方法中,我都对数据进行某种验证以检查它是否可以接受,如果不可以return 带有错误和状态代码的 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
我原以为如果数据无效,它会 return 向前端发送 jsonfiy 错误消息,但尽管打印有效,但前端没有收到 jsonfiy 错误,它收到 jsonfiy 成功消息 no重要的是数据是否有效。
@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
我可以解决它的一种方法是,如果数据无效,则通过 change_data
方法 returning False
,如果有效,则 True
,并且基于return 来自“/change”路线的 jsonfiy,但我不喜欢这个解决方案,提前致谢!
- 您的调用代码不期望 return,因此您的错误不是来自函数 return 的 'captured'
if new_data:
update_data.change_data(new_data)
- 即使您的调用代码需要一个 return 值,您也不会在 return 向客户端输出之前检查是否发生了错误。您的代码只是
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