我创建了flask应用,并创建了有两个按钮的页面。
<form method="post">
<button id="clearChoices" type="submit" name="clear" value="yes"> Clear my choices</button>
<button id="NewMeeting" type="submit" name="meeting" value="yes"> New Meeting</button>
</form>
在app.py中,我通过函数得到了post请求。
@app.route("/favorites/", methods=['POST', 'GET'])
def favorites():
username = get_user_logged_in()
if username:
if request.method == 'POST':
details = request.form
clear_but = details['clear']
meeting_but = details['meeting']
if clear_but == 'yes':
clearChoices(username)
return redirect('/homepage')
if meeting_but == 'yes':
return redirect('/new_meeting')
return render_template('favorites.html', dogs=dogs)
return redirect('/login')
但当我点击 "清除我的选择 "时,我得到一个错误。
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'meeting'
但当我点击 "新建会议 "时,我得到一个错误。
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'clear'
我怎样才能避免这个错误?
<form method="post">
<button id="clearChoices" type="submit" name="clear" value="yes"> Clear my choices</button>
<button id="NewMeeting" type="submit" name="meeting" value="yes"> New Meeting</button>
</form>
在这个页面中,如果你点击了一个按钮,只有该数据才会通过post方式传递。因此,如果你点击 "清除我的选择 "按钮,只有这些数据将被发送到下一个页面。像这样,{'clear' : 'yes'}。而在你的flask代码中,你有这样2行,clear_but = details['clear']和meeting_but = details['meeting']。如果你点击第一个按钮,它将通过keyError : meeting,第二个按钮的错误将是keyError : clear。