相关疑难解决方法(0)

在Flask应用程序中提交表单时,错误请求错误的原因是什么?

在阅读了许多类似的声音问题和相关的Flask文档之后,我似乎无法弄清楚在提交表单时会产生以下错误:

400错误请求

浏览器(或代理)发送了此服务器无法理解的请求.

虽然表单总是正确显示,但当我提交与这些函数中的任何一个相关联的HTML表单时,会发生错误请求:

@app.route('/app/business', methods=['GET', 'POST'])
def apply_business():
    if request.method == 'POST':    
        new_account = Business(name=request.form['name_field'], email=request.form['email_field'], account_type="business", 
            q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'], 
            q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'],
            account_status="pending", time=datetime.datetime.utcnow())
        db.session.add(new_account)
        db.session.commit()
        session['name'] = request.form['name_field']    
        return redirect(url_for('success'))
    return render_template('application.html', accounttype="business")          

@app.route('/app/student', methods=['GET', 'POST'])
def apply_student():    
    if request.method == 'POST':    
        new_account = Student(name=request.form['name_field'], email=request.form['email_field'], account_type="student", 
            q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'], 
            q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'], q8=request.form['q8_field'], 
            q9=request.form['q9_field'], q10=request.form['q10_field'],
            account_status="pending", time=datetime.datetime.utcnow())
        db.session.add(new_account)
        db.session.commit()
        session['name'] = request.form['name_field']    
        return redirect(url_for('success')) 
    return render_template('application.html', accounttype="student")
Run Code Online (Sandbox Code Playgroud)

HTML的相关部分是

<html>
<head>
    <title>apply</title>
</head>
<body>
    {% …
Run Code Online (Sandbox Code Playgroud)

python forms post bad-request flask

75
推荐指数
1
解决办法
7万
查看次数

表格发送错误,Flask

有两个形式<input type="submit">.但是当我发送它时,第二次提交会导致错误.

布局:

<form action="{{ url_for('index') }}" method="post">
    <input type="submit" name="add" value="Like">
    <input type="submit" name="remove" value="Dislike">
</form>
Run Code Online (Sandbox Code Playgroud)

main.py:

...
if request.method == 'POST':
    if request.form['add']:
        return redirect(url_for('index'))
    elif request.form['remove']:
        return redirect(url_for('index'))
...
Run Code Online (Sandbox Code Playgroud)

首先提交(添加)效果很好,但第二次(删除)...:

错误请求浏览器(或代理)发送了此服务器无法理解的请求.

我该如何解决这个错误?

UPD:

这很简单:request.form返回ImmutableMultiDict:

... 
if 'Like' in request.form.values():
     ...
elif 'Dislike' in request.form.values():
     ...
Run Code Online (Sandbox Code Playgroud)

python forms flask

56
推荐指数
1
解决办法
8万
查看次数

标签 统计

flask ×2

forms ×2

python ×2

bad-request ×1

post ×1