我的python代碼
if request.method == 'POST':
if request.form['submit_post'] == 'Submit post':
print('Hello')
elif request.form['print_posts'] == 'Print posts':
print('Bye')
else:
print("malformed")
pass
我的 HTML 代碼
<form action='/' method='post'>
<input placeholder='Name' name='name'>
<input placeholder='Post Content' name='post'>
<input type= "submit" name="submit_post" value='Submit post'>
</form>
<form action='/' method='post'>
<input type= "submit" name="print_posts" value="Print posts">
<!-- To make the program print all the posts in the database -->
</form>
問題是,當按下“print_posts”按鈕時,它會激活 if request.method == 'POST': 然后我得到 Bad request 或這張圖片400 Bad Request的 elif “print_posts” 部分。
真正奇怪的是,當我將 print_posts if 陳述句移動到 if request.method == 'POST' 中的第一行時:如下面的代碼所示。
if request.method == 'POST':
if request.form['print_posts'] == 'Print posts':
print('Bye')
elif request.form['submit_post'] == 'Submit post':
print('Hello')
else:
print("malformed")
pass
現在 print_posts if 陳述句有效, submit_posts 如果陳述句無效。
我還研究了這個問題,發現答案說縮進是罪魁禍首,但看起來是正確的
uj5u.com熱心網友回復:
您的燒瓶代碼假定“print_posts”和“submit_posts”都在請求中。但是,您的 html 僅發送兩者之一。當它首先檢查不正確的密鑰時會失敗。因此,您的燒瓶代碼可能會因關鍵錯誤而失敗。
您需要首先檢查密鑰是否在 request.form 陣列中:python 成語是說“如果 my_key in my_dict:”
if request.method=='POST':
if 'print_posts' in request.form:
# do something with request.form['print_posts']
elif 'submit_posts' in request.form:
# do something with request.form['submit_posts']
else:
# error
如果你有機會,看看傳入的請求是一個 python 除錯器。這將使您更好地了解您的網頁發送給您的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498360.html
下一篇:使用RestAssured時,如果我發送一個post請求將資料提交到服務器,我該如何故意遺漏json字串中的某些屬性?