Eu estou montando um aplicativo Django que tenha formulários no site, mas estou processando esses formulários manualmente (ou seja, digitando cada campo e enviando-os com o AJAX).
Como posso integrar Recaptcha em meus formulários? Obrigado pela ajuda!
Respostas:
1 para resposta № 1Eu estou apenas usando este cliente python para recaptcha:
http://pypi.python.org/pypi/recaptcha-client
então minha visão é assim:
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}
2 para resposta № 2
recaptcha-client não "trabalha com python3. Acabei usando o django-recaptcha (https://pypi.python.org/pypi/django-recaptcha/1.0). A breve documentação explica como implementar a recaptcha usando o campo de formulário "ReCaptchaField", mas você pode simplesmente usar a função submit de captcha.client como esta:
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"],)
Então você verifica se recaptcha_response.is_valid
.
Não há necessidade de adicionar recaptcha ao seu INSTALLED_APPS ou qualquer coisa.