我正在嘗試根據在 html 中單擊的按鈕對資料庫進行簡單的 POST。我的問題是python似乎沒有迭代第一個if:我更改了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 轉到下一個?
謝謝你的幫助
uj5u.com熱心網友回復:
問題是request.form['submit_button_pizza']條件檢查。如果您的表單沒有鍵“submit_button_pizza”,這將導致錯誤。
嘗試使用 arequest.form.get('submit_button_pizza')檢查密鑰是否存在,然后繼續。
另一件事:如果您的表單一次只有一個提交條件,則使用if-elif-elif-else序列來檢查其中一個條件。如果您的電流if-if-if-else是設計使然,請忽略此評論:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457672.html
