Django中无表单实现Recaptcha?
我正在制作一个Django应用,这个网站上有表单,但我手动渲染这些表单(也就是说,我是逐个输入每个字段,并通过AJAX提交它们)。
我该如何把Recaptcha集成到我的表单里呢?谢谢大家的帮助!
2 个回答
3
recaptcha-client在python3中无法使用。我最后选择了使用django-recaptcha(https://pypi.python.org/pypi/django-recaptcha/1.0)。简要的文档说明了如何通过表单字段'ReCaptchaField'来实现recaptcha,但你也可以像这样直接使用captcha.client中的提交功能:
import captcha.client
[...]
recaptcha_response = captcha.client.submit(
request.POST.get('recaptcha_challenge_field'),
request.POST.get('recaptcha_response_field'),
'[[privatekey]]',
request.META['REMOTE_ADDR'],)
然后你需要检查一下recaptcha_response.is_valid
是否有效。
不需要把recaptcha添加到你的INSTALLED_APPS或者其他地方。
1
我正在使用这个Python库来处理reCAPTCHA:
http://pypi.python.org/pypi/recaptcha-client
然后我的视图代码看起来是这样的:
captcha_key = get_config('RECAPTCHA_PUB_KEY',None)
recaptcha_challenge_field = request.POST.get('recaptcha_challenge_field', None)
recaptcha_response_field = request.POST.get('recaptcha_response_field', None)
check_captcha = captcha.submit(recaptcha_challenge_field, recaptcha_response_field, settings.RECAPTCHA_PRIVATE_KEY, request.META['REMOTE_ADDR'])
if check_captcha.is_valid is False:
log.info('captcha_error : %s' % check_captcha.error_code)
return {'TEMPLATE':template_name,'captcha_error': True,'register_form': f,'captcha_key':captcha_key ,'next':redirect_to}