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