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
是设计使然,请忽略此评论:)
我正在尝试根据在 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
是设计使然,请忽略此评论:)