WTF 表单验证失败



>给出下面的 Form.py 文件:

Form.py file: 
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, validators
from wtforms.validators import DataRequired, Length
# Define QuoteForm below
class QuoteForm(FlaskForm):
qauthor = StringField("Quote Author", validators =[Length(min=3,max=100,message=("Field must be between 3 and 100 characters long")), DataRequired(message=("This field is required"))])
qstring = StringField("Quote", validators =[Length(min=3,max=200,message=("Field must be between 3 and 200 characters long")), DataRequired(message=("This field is required"))])
submit= SubmitField("Add Quote")

给予查看功能:

@app.route('/addquote/', methods=['GET', 'POST'])
def add_quote():
form = QuoteForm()
if request.method=='POST':
quote = Quotes(quoteauthor=form.qauthor.data, quotestring= form.qstring.data)
try:
db.session.add(quote)
db.session.commit()
except Exception:
db.session.rollback()
return render_template("addquote_confirmation.html",form=QuoteForm())
else:
return render_template("addquote.html",form=QuoteForm())
if __name__=="__main__":
app.run()

表单的 HTML 文件:

<form action = "on_validate()" method = "POST">
{{ form.qauthor.label }} : {{ form.qauthor }} <br>
{% for error in form.qauthor.errors %}
<span style="color: red;">[{{ error }}]</span><br>
{% endfor %} <br>
{{ form.qstring.label }} : {{ form.qstring }} <br><br>
{% for error in form.qstring.errors %}
<span style="color: red;">[{{ error }}]</span><br>
{% endfor %} <br>
{{ form.submit }}
</form>

运行测试用例时出现以下错误: 断言错误: b'[此字段为必填字段]' 在 b'\ \ 中找不到

已成功将一个引号添加到数据库中。

\要查看所有报价,请单击此处\要转到主页,请单击主页 \ '

错误

没有 on_validate((。在下面使用:

<form  method = "POST" novalidate>
{{ form.qauthor.label }} : {{ form.qauthor }} <br>
{% for error in form.qauthor.errors %}
<span style="color: red;">[{{ error }}]</span><br>
{% endfor %} <br>
{{ form.qstring.label }} : {{ form.qstring }} <br><br>
{% for error in form.qstring.errors %}
<span style="color: red;">[{{ error }}]</span><br>
{% endfor %} <br>
{{ form.submit }}
</form>

对于 form.py

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, validators
from wtforms.validators import InputRequired, Length 
# Define QuoteForm below
class QuoteForm(FlaskForm):
qauthor = StringField("Quote Author", validators =[Length(min=3,max=100,message=("Field must be between 3 and 100 characters long.")), InputRequired(message='This field is required.')])
qstring = StringField("Quote", validators =[Length(min=3,max=200,message=("Field must be between 3 and 200 characters long.")), InputRequired(message='This field is required.')])
submit= SubmitField("Add Quote")

和 routes.py

@app.route('/addquote/', methods=['GET', 'POST'])
def add_quote():
form = QuoteForm()
if form.validate_on_submit():
if request.method=='POST':
quote = Quotes(quoteauthor=form.qauthor.data, quotestring= form.qstring.data)
try:
db.session.add(quote)
db.session.commit()
except Exception:
db.session.rollback()
return render_template("addquote_confirmation.html",form=form)
else:
return render_template("addquote.html",form=form)
return render_template("addquote_confirmation.html",form=form)
else:
return render_template("addquote.html",form=form)

最新更新