Python 没有执行第一个 if 语句

Python not executing past 1st if statement

我正在尝试根据在 html 中单击的按钮创建一个简单的 POST 数据库。 我的问题是 python 似乎没有迭代第一个如果:我更改了 ifs 的顺序并且第一个总是有效,其余的在第 34 行给出了 400 错误请求错误(request.form ['submit_button_pizza'])

@app.route('/<tableId>/menu',  methods=['GET', 'POST'])
def menu(tableId=None):
    conn = get_db_connection()
    pizzas = conn.execute('SELECT * FROM pizzas').fetchall()
    drinks = conn.execute('SELECT * FROM drinks').fetchall()
    desserts = conn.execute('SELECT * FROM desserts').fetchall()
    clientOrder = conn.execute('SELECT * FROM clientOrder').fetchall()
    
    conn.commit()
    
    
    if request.method == 'POST':
        if request.form['submit_button_pizza']:
            pass 
            conn.execute('INSERT INTO clientOrder (tableId, pizza) VALUES (?, ?)',[tableId, request.form['submit_button_pizza']])
            conn.commit()
            return render_template('menu.html', pizzas=pizzas,drinks=drinks, desserts=desserts, tableId=tableId)

        if request.form['submit_button_drink']:
            pass 
            conn.execute('INSERT INTO clientOrder (tableId, drink) VALUES (?, ?)',[tableId, request.form['submit_button_drink']])
            conn.commit()
            return render_template('menu.html', pizzas=pizzas,drinks=drinks, desserts=desserts, tableId=tableId)
            
        if request.form['submit_button_dessert']:
            pass 
            conn.execute('INSERT INTO clientOrder (tableId, dessert) VALUES (?, ?)',[tableId, request.form['submit_button_dessert']])
            conn.commit()
            return render_template('menu.html', pizzas=pizzas,drinks=drinks, desserts=desserts, tableId=tableId)
        else:
            return render_template('menu.html', pizzas=pizzas,drinks=drinks, desserts=desserts, tableId=tableId)

    elif request.method == 'GET':
        return render_template('menu.html', pizzas=pizzas,drinks=drinks, desserts=desserts, tableId=tableId)

如果第一个语句不存在(因为我没有单击那个按钮),我如何告诉 python 转到下一个?

感谢您的帮助

问题是 request.form['submit_button_pizza'] 条件检查。如果您的表单没有关键字“submit_button_pizza”,这将导致错误。

尝试使用 request.form.get('submit_button_pizza') 检查密钥是否存在,然后继续。

另一件事:如果您的表单一次只有一个提交条件,则使用 if-elif-elif-else 序列来检查其中一个条件。如果您当前的 if-if-if-else 是设计使然,请忽略此评论:)