1

我正在使用 bootstrap/wtf.html 模板来显示我的表单。我所有的表单输入字段都有 wtform 验证器,允许我定义自定义错误消息。不幸的是,从 flask_wtf 导入的 RecaptchaField 似乎不支持验证器(不是为了验证它,因为它是自动完成的,而是为了定义自定义错误消息)。用户不应该面对技术信息,而只是一个很好的通用信息。仍然使用 bootstrap/wtf 模板来定义我的自定义消息的最简单和最干净的选项是什么?其他选择是停止使用模板呈现 recaptcha 字段,但如果可能的话,我宁愿不这样做。

谢谢 !

4

2 回答 2

1

创建字段时传递自定义错误消息。例如:

from flask_wtf.recaptcha import RecaptchaField, Recaptcha

class SignupForm(Form):
    email = EmailField('Email')
    recaptcha = RecaptchaField(validators=[Recaptcha(message="Your custom message")])
    submit = InlineSubmitField('Join Now')
于 2018-05-07T06:12:24.090 回答
0
from flask_wtf.recaptcha.fields import RecaptchaField
from wtforms import Form, BooleanField, StringField, PasswordField, IntegerField, validators
from flask import render_template, request, redirect, url_for, jsonify


class InquiryForm(Form):
      email = StringField('email', [validators.Email(message=(u'invalid email address'))])
      recaptcha = RecaptchaField()

@app.route('/inquiry', methods=['POST','GET'])
def inquiry():
form = InquiryForm(request.form)
if request.method == 'POST' and form.validate():
   return jsonify({'success' : 'Message sent'})
else:
    # request.form.get('g-recaptcha-response')
    # google recaptcha v2 validate return
    if request.form.get('g-recaptcha-response') and form.recaptcha.errors:
       form.recaptcha.errors.append("System has detected possible suspicious activity, please refresh this page.")
       form.recaptcha.errors.reverse()
    elif form.recaptcha.errors:
       form.recaptcha.errors.append("Need to validate recaptcha")
       form.recaptcha.errors.reverse()

    return jsonify(form.errors)

这是我附加自定义recaptcha错误消息的方法

于 2018-07-26T15:21:09.043 回答