如果用户以 json 格式提供输入数据,我正在尝试将详细信息与数据库匹配。我们必须检查键,如果键存在于数据中(我们有),它应该做一些预处理并返回结果。我正在创建一个 API,它根据需要返回。
在这里我使用了多个 if 语句,但我想减少我的代码,有什么办法可以做到吗?
下面是我的代码供参考
@app.route('/api',methods=['GET'])
def aadhar_pan_users_check():
data=request.get_json()
aadhar=data.get('aadhar')
pancard=data.get('pan')
fname = data.get('firstName')
lname = data.get('lastName')
gender = data.get('gender')
cust_type = data.get('cust_type')
dob = data.get('dob')
res=[]
if aadhar!=None and pancard!=None:
res.append((aadhar_check(aadhar), pan_check(pancard)))
return str(res)
elif pancard!=None:
return str(pan_check(pancard))
elif aadhar!=None:
return str(aadhar_check(aadhar))
# return jsonify({'aadhar': str(aadhar_check(aadhar))})
elif fname!=None and lname!=None and gender!=None and cust_type!=None and dob!=None and aadhar!=None and pancard!=None:
ret=[fname,lname,gender,cust_type,dob, aadhar, pancard]
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['gen'],formatting_data['client_type'],formatting_data['dob'],formatting_data['aadhar'],formatting_data['pan']]
# print(ret_ty)
return (preprocess_user_data(ret,ret_ty),aadhar_check(aadhar),pan_check(pancard))
elif fname!=None and lname!=None and gender!=None and cust_type!=None:
ret=[fname,lname,gender,cust_type]
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['gen'],formatting_data['client_type']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty),aadhar_check(aadhar)
elif fname!=None and lname!=None and gender!=None:
ret=[fname,lname,gender]
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['gen']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty)
elif fname!=None and lname!=None and dob!=None:
ret=[fname,lname,dob]
print(1000*'3')
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['dob']]
return preprocess_user_data(ret,ret_ty),aadhar_check(aadhar)
elif fname!=None and lname!=None:
ret=[fname,lname]
ret_ty=[formatting_data['fname'],formatting_data['lname']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty)
elif fname!=None and lname!=None and cust_type!=None and dob!=None:
ret=[fname,lname,gender,cust_type,dob]
print(1000*'4')
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['client_type'],formatting_data['dob']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty),aadhar_check(aadhar)
elif fname!=None and lname!=None and gender!=None and cust_type!=None:
ret=[fname,lname,gender,cust_type]
print(1000*'5')
ret_ty=[formatting_data['fname'],formatting_data['lname'],formatting_data['gen'],formatting_data['client_type']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty),aadhar_check(aadhar)
elif fname!=None:
ret=[fname]
print(type(fname))
ret_ty=[formatting_data['fname']]
# print(ret_ty)
return preprocess_user_data(ret,ret_ty)
else:
return "Something wrong"
我有一些有助于预处理的功能。
我不是 100% 清楚您的代码在做什么,但看起来您正在检查 aadhar 或 pancard 是否为 None - 如果它们为 None 则返回一些字符串表示 - 然后使用提供的任何额外信息。
使用它,您是否可以循环遍历“额外”数据,如果存在,将其附加到列表中,如果没有,则什么都不做?
然后正常返回 preprocess_function 。
像下面这样:
def aadhar_pan_users_check():
data=request.get_json()
aadhar=data.get('aadhar')
pancard=data.get('pan')
cust_data = {
'fname' : data.get('firstName'),
'lname' : data.get('lastName'),
'gen' : data.get('gender'),
'client_type' : data.get('cust_type'),
'dob' : data.get('dob')
}
res = []
ret = []
ret_ty = []
for key,value in cust_data.items():
if value is not None:
ret.append(value)
ret_ty.append( formatting_data[key] )
if (pan is not None) and (aadhar is not None):
check_result = 'YOUR_CODE_HERE' # your_code_here
elif (pan is not None) and (aadhar is None):
check_result = pan_check(pan)
elif (pan is None) and (aadhar is not None):
check_result = aadhar_check(aadhar)
else:
check_result = None
if len(ret) == 0:
preprocess_result = None
else:
preprocess_result = preprocess_user_data(ret,ret_ty)
return preprocess_result, check_result
我认为该功能现在应该这样做:
如果两者都不是 None:您需要填写此内容,我不知道您期望什么行为。如果 pan 不是 None,则 aadhar 是 None:保留 'check_pan' 函数的结果。如果 aadhar 不是 None,则 pan 为 None:类似于 pan 如果两者都为 none:保留 None 作为检查结果。
如果有可用的客户数据,则保留预处理功能的结果。如果没有客户数据,则保留 None 作为预处理功能的结果。
然后:
返回预处理函数和 check_function 的结果。
if/else 比之前的函数更多,但我认为现在它们的目的已经很清楚了。
我没有任何样本数据来测试这会做什么,所以考虑这个“伪代码”。
您通常也应该比较is not None
而不是`!= None,例如参见“ is None ”和“ ==None ”之间的区别是什么
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句