我正在创建一个API路由,该路由在Flask中返回一个随机数。在将发布请求发送到端点时,如果发布请求中未包含某些字段(例如,如果请求中没有“名称”,则我希望它返回错误)应该返回错误。)
我尝试用字典来做,尝试并抓住。如果缺少字段,则向字典添加一个key:值;如果字典不为空,则返回该值。第一个问题是,如果缺少多个字段,则仅将其中一个添加到错误字典中。第二个问题是,我还试图确保某些字段也具有一定的值(例如,颜色需要为红色或蓝色)。如果我检查一件事,那就行了-如果我这样做
if color != "red" or color != "blue":
它将始终显示错误。即使我将其拆分为多个if语句,也仍然会出错。我已经搜索了Google,至少在30次不同的时间重复了我的问题,而我得到的大多数答案都是关于SalesForce(我假设是某些公司/软件等)。
那么...是否有一种方法可以使某些字段必填?还是我在追赶上走上正确的路?如果是通过try and catch,如何使它显示多个错误/在某件事情上有变量?
@app.route('/api/get-num', methods=["POST"])
def num():
errors = {}
try:
name = request.json['name']
except:
errors["errors"] = {"name" : "This field is required."}
try:
color = request.json['color']
if color != "red" or color != "blue":
errors["errors"] = {"color" : "Invalid value, must be red or blue."}
except:
errors["errors"] = {"color" : "Invalid value, must be red or blue."}
if len(errors) != 0:
return errors
create_dict = {
'name' : request.json['name'],
'email ': request.json['email'],
'year': request.json['year'],
'color' : request.json['color']
}
return jsonify(create_dict)
示例:
If name is missing and color is wrong, it should show:
{
"errors": {
"color": [
"Invalid value, must be red or blue."
],
"name": [
"This field is required."
]
}
}
With name missing and color being "red", it's currently showing:
{
"errors": {
"color": "Invalid value, must be red or blue."
}
}
答案 0 :(得分:1)
errorsDict = {"errors":{"color":[],"name":[]}}
errorsDict = {"errors":{"color":[],"name":[]}}
try:
name = request.json['name']
except:
errorsDict["errors"]["name"].append("This field is required.")
try:
color = request.json['color']
except:
errorsDict["errors"]["color"].append( "COLORS MISSING!")