werkzeug.exceptions.BadRequestKeyError点击按钮时出现错误

问题描述 投票:0回答:1

我创建了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'

我怎样才能避免这个错误?

python flask
1个回答
0
投票
<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。

© www.soinside.com 2019 - 2024. All rights reserved.