单击按钮时出现werkzeug.exceptions.BadRequestKeyError

时间:2020-06-10 09:27:06

标签: python flask

我创建flask应用程序,并使用2个按钮创建页面:

<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中,我通过函数获得了发帖请求:

@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'

如何避免此错误?

1 个答案:

答案 0 :(得分: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'}。在烧瓶代码中,您有这两行,clear_but = details ['clear']和Meeting_but = details ['meeting']。如果您单击第一个按钮,它将通过keyError:开会,对于第二个按钮,错误将是keyError:清除。