1

我已经能够让recpatcha正确显示并提交我想将验证码放在前面的表单,但无论您在recaptcha表单中输入什么,它都会验证。

这是我的 wtforms 类:

class MessageForm(Form):
  reason_code = SelectField(u'Reason', [validators.Required(message=(u'A reason for contacting us must be selected.'))], default = -1, choices=[('', ''), ('0', 'Advertising'), ('1', 'Comments/Suggestions'), ('2', 'Support')])
  reply_to = TextField(u'Email address', [validators.Required(message=(u'A reply to email address is required.')), validators.Email(message=(u'A valid reply to email address is required.'))])
  message_body =    TextAreaField(u'Message', [validators.Required(u'You must enter a message to submit this form.')])
  captcha = RecaptchaField(u'Captcha', [validators.Required(u'You must properly fill in the Captcha to submit this form.')], public_key=esp_constants.DEV_RECAPTCHA_PUBLIC_KEY, private_key=esp_constants.DEV_RECAPTCHA_PRIVATE_KEY, secure=True)

我正在使用 App Engine,在我的处理程序中我有这个

def post(self):
  message_form = MessageForm(self.request.POST, captcha={'ip_address': str(self.request.remote_addr)})

其他人知道我是否缺少某些东西?表单发布后,RecaptchaField 似乎拥有所有正确的数据(即 challenge_field 等)。

感谢您的任何建议。

4

2 回答 2

2

Flask-WTF 支持 Recaptcha(参见https://flask-wtf.readthedocs.org/en/latest/),所以也许他们的代码可以帮助你(特别是:https ://github.com/lepture/flask- wtf/tree/master/flask_wtf/recaptcha)。

于 2013-12-10T22:13:09.263 回答
1

我最终不得不自己动手让 WebApp2、Recaptcha 和 WTForms 的组合在 Google App Engine 中可靠地工作

这基本上就是我在基本控制器中将其作为验证方法处理的方式

https://gist.github.com/mengelhart/8045030

验证码 HTML 片段如下所示:

https://gist.github.com/mengelhart/8045070

至于 recaptcha 字段值,我使用了标准的 HiddenField 而不是这样的 RecaptchaField 类型:

验证码 = HiddenField("ReCaptcha")

干杯

于 2013-12-19T19:51:20.643 回答