Flask 在烧瓶中提交表单时,我收到错误的请求错误

Flask 在烧瓶中提交表单时,我收到错误的请求错误,flask,Flask,我的表格是这样的 <form action="{{ url_for('addnote') }}"> Notatka: <input type="text" name="note" placeholder="Notatka"> <br><br> <input onclick="document.getElementById('receiver').d

我的表格是这样的

<form action="{{ url_for('addnote') }}">
                Notatka: <input type="text" name="note" placeholder="Notatka">
                <br><br>
                <input onclick="document.getElementById('receiver').disabled ^= true;" type="checkbox" checked> Do wszystkich?
                <br><br>
                <input type="text" name="receiver" id="receiver" placeholder="Adresat" disabled="false" value="">
                <br><br>
                <input type="hidden" name="author" value="{{ current_user.username }}">
                <input type="submit" name="action" value="Dodaj notatke">
            </form>

后来我想用这些数据做点什么,但即使用这么少量的代码,我也会得到错误的请求错误。我正在寻找解决方案,但在我的情况下找不到任何有帮助的方法。您的表单没有
method=“post”
属性,因此它将默认为
get
,生成URL键/值对(例如
/addnote?note=x&receiver=…

还要确保您的路线正在收听POST:

@app.route('/addnote', methods=['GET', 'POST'])
def addnote():
    ...

您可能需要查看这些表单。WTForms是一个很好的烧瓶扩展,可以很好地处理这个问题。使用WTForms时会出现如下情况:

                           <div class="form-group">
                                {{ form.myField.label(class="form-control-label") }} {% if form.myField.errors %} {{ form.myField(class="form-control
                                form-control-lg is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for errors in form.myField.errors %}
                                    <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                                {% else %} {{ form.myField(class="form-control form-control-lg") }} {% endif %}
                            </div>

                         <form action="http://127.0.0.1:5000/addnote" method="post">

                             <input type="submit" class="btn btn-outline-info" name="submit_button" value="Retrieve Data">

                         </form>

好吧,我不想使用flask_wtf,但我找到了解决这个问题的方法。我没有使用
author=request.form['author']
而是使用
author=request.form.get('author')
。我不确定问题的真正原因是什么,但这样做是有效的。

即使在我使用post方法时,我仍然收到相同的错误请求,因此这不是因为某些原因,我试图避免使用flask_wtf,但谢谢。
                           <div class="form-group">
                                {{ form.myField.label(class="form-control-label") }} {% if form.myField.errors %} {{ form.myField(class="form-control
                                form-control-lg is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for errors in form.myField.errors %}
                                    <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                                {% else %} {{ form.myField(class="form-control form-control-lg") }} {% endif %}
                            </div>

                         <form action="http://127.0.0.1:5000/addnote" method="post">

                             <input type="submit" class="btn btn-outline-info" name="submit_button" value="Retrieve Data">

                         </form>
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField, SelectField
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError

class ToolForm(FlaskForm):
    myField = StringField('Enter Data', validators=[DataRequired()])

@app.route('/addnote', methods=['GET', 'POST'])
def addnote():
    form = ToolForm()

    if request.method == 'POST':
         if request.form['submit_button'] == 'Retrieve Data':
             x = form.myField.data