6
WTForm検証エラーをフラッシュしようとしています。私はthis snippetを発見し、わずかにそれを修正:ここFlask-WTFform:Flashにエラーが表示されない
def flash_errors(form):
"""Flashes form errors"""
for field, errors in form.errors.items():
for error in errors:
flash(u"Error in the %s field - %s" % (
getattr(form, field).label.text,
error
), 'error')
は私のフォームクラスの1つです:
class ContactForm(Form):
"""Contact form"""
# pylint: disable=W0232
# pylint: disable=R0903
name = TextField(label="Name", validators=[Length(max=35), Required()])
email = EmailField(label="Email address",
validators=[Length(min=6, max=120), Email()])
message = TextAreaField(label="Message",
validators=[Length(max=1000), Required()])
recaptcha = RecaptchaField()
とビュー:
@app.route("/contact/", methods=("GET", "POST"))
def contact():
"""Contact view"""
form = ContactForm()
flash_errors(form)
if form.validate_on_submit():
sender = "%s <%s>" % (form.name.data, form.email.data)
subject = "Message from %s" % form.name.data
message = form.message.data
body = render_template('emails/contact.html', sender=sender,
message=message)
email_admin(subject, body)
flash("Your message has been sent. Thank you!", "success")
return render_template("contact.html",
form=form)
しかし、エラーが検証の失敗時に点滅されていません。データが有効なときに私の成功メッセージが点滅するので、フォームとテンプレートがうまく動作することがわかります。なにが問題ですか?
の
else
にflash_errors
を入れてみてください。ありがとう! –質問を入力するだけで、問題の考え方が異なったり分かりやすくなることがあります。 –
私はそこにあなたの簡潔な声明に投票します。私はちょうど同じ経験を自分自身、ここに:http://stackoverflow.com/questions/19152471/what-is-the-technique-of-presenting-again-form-which-contains-error – swdev