替代嵌套 if 语句 Flask
Alternative to Nested if statements Flask
总结
我构建了一个 flask 应用程序,它从用户那里获取了多个输入,并且需要根据特定标准验证输入。如果输入未正确验证,将显示一条闪现消息,说明输入有误。
主页有 4 个嵌套的 if 语句,根据错误的结果显示某些消息。
Python代码
if request.method == 'POST':
VM = request.form['email']
RM = request.form['mobile']
if isEmailInUse(VM):
if VM not in blacklist and VM.endswith("@gmail.com"):
if len(RM) == 11 and RM.startswith("555"):
create(user)
return redirect(url_for('see_users'))
else:
flash('Invalid mobile! ', 'error')
else:
flash('Invalid Email Address! ', 'error')
else:
flash('Email Address already in use. ', 'error')
return render_template('Validate_Email.html')
我试过了
if VM not in blacklist and VM.endswith("@gmail.com"): flash('Invalid Email Address! ', 'error')
但它继续使用代码。
除了在 flask 中使用如此多的嵌套 if 来验证用户输入的 flask 消息之外,还有其他替代方法吗?
一些指导或帮助将不胜感激!
根据需要颠倒测试顺序并取反逻辑,例如:
if request.method == 'POST':
VM = request.form['email']
RM = request.form['mobile']
if not checkinUse(VM):
flash('Email Address already in use. ', 'error')
elif VM in blacklist or not VM.endswith("@gmail.com"):
flash('Invalid Email Address! ', 'error')
elif len(RM) != 11 or not RM.startswith("555")
flash('Invalid mobile! ', 'error')
else:
create(user)
return redirect(url_for('see_users'))
return render_template('Validate_Email.html')
PS checkinUse
似乎是一个有问题的函数名称选择 returns True 如果电子邮件地址是 not使用.
总结
我构建了一个 flask 应用程序,它从用户那里获取了多个输入,并且需要根据特定标准验证输入。如果输入未正确验证,将显示一条闪现消息,说明输入有误。
主页有 4 个嵌套的 if 语句,根据错误的结果显示某些消息。
Python代码
if request.method == 'POST':
VM = request.form['email']
RM = request.form['mobile']
if isEmailInUse(VM):
if VM not in blacklist and VM.endswith("@gmail.com"):
if len(RM) == 11 and RM.startswith("555"):
create(user)
return redirect(url_for('see_users'))
else:
flash('Invalid mobile! ', 'error')
else:
flash('Invalid Email Address! ', 'error')
else:
flash('Email Address already in use. ', 'error')
return render_template('Validate_Email.html')
我试过了
if VM not in blacklist and VM.endswith("@gmail.com"): flash('Invalid Email Address! ', 'error')
但它继续使用代码。
除了在 flask 中使用如此多的嵌套 if 来验证用户输入的 flask 消息之外,还有其他替代方法吗?
一些指导或帮助将不胜感激!
根据需要颠倒测试顺序并取反逻辑,例如:
if request.method == 'POST':
VM = request.form['email']
RM = request.form['mobile']
if not checkinUse(VM):
flash('Email Address already in use. ', 'error')
elif VM in blacklist or not VM.endswith("@gmail.com"):
flash('Invalid Email Address! ', 'error')
elif len(RM) != 11 or not RM.startswith("555")
flash('Invalid mobile! ', 'error')
else:
create(user)
return redirect(url_for('see_users'))
return render_template('Validate_Email.html')
PS checkinUse
似乎是一个有问题的函数名称选择 returns True 如果电子邮件地址是 not使用.