/ / Recaptcha no Django sem formulários? - python, django, formulários, recaptcha

Recaptcha no Django sem formulários? - python, django, formulários, recaptcha

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 № 1

Eu 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.