什么是在瓶递交申请表格时,错误的请求错误的原因是什么?(What is the cause of t

2019-07-17 17:32发布

阅读很多类似的探测问题和相关文档瓶后,我似乎无法弄清楚什么是在提交表单生成以下错误:

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")

HTML的相关部分是

<html>
<head>
    <title>apply</title>
</head>
<body>
    {% if accounttype=="business" %}
    <form action="{{ url_for('apply_business') }}" method=post class="application_form">
    {% elif accounttype=="student" %}
    <form action="{{ url_for('apply_student') }}" method=post class="application_form">     
    {% endif %} 
    <p>Full Name:</p>
    <input name="name_field" placeholder="First and Last">
    <p>Email Address:</p>
    <input name="email_field" placeholder="your@email.com">
    ...

对于大多数人来说,问题并没有调用GETPOST ,但我在这两个功能正是这样做的,我仔细检查了,以确保我一切进口必要的,如from flask import request 。 我也查询的数据库,并确认不添加从形式补充。

在烧瓶中的应用程序,我请求被标记HTML表单形式略有不同领域。 保持名称一致是必须的。 更可以在这个问题阅读形式发送错误,瓶

Answer 1:

该解决方案是简单的评论发现。 由于在这个问题解决, 表发送错误,瓶 ,并指出肖恩·维埃拉 ,

......问题是,当瓶它未能找到在指定参数和形式词典一键引发HTTP错误。 什么瓶假定在默认情况下是,如果你是要求一个特定的键,它的不存在的东西,然后就剩了要求和整个请求无效。

换句话说,如果只有一个,你在Python请求表单元素不能在HTML中找到,那么POST请求无效,并出现错误,在我的情况没有在追踪任何违规行为。 对我来说,这是一个缺乏与拼写一致的:在HTML中,我标记各种形式的投入

<input name="question1_field" placeholder="question one">

而在Python中,当时有一个叫POST,我抓住一个不存在的形式

request.form['question1']

然而,能与我的HTML表单名称相一致,它需要的是

request.form['question1_field']

我希望这有帮助。



文章来源: What is the cause of the Bad Request Error when submitting form in Flask application?