替代嵌套 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使用.