>给出下面的 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)