Django reCAPTCHA form field/widget integration app.
Install or add
nobot
to your Python path.Add
nobot
to yourINSTALLED_APPS
setting.Add a
NOBOT_RECAPTCHA_PUBLIC_KEY
setting to the project'ssettings.py
file. This is your public API key as provided by reCAPTCHA, i.e.:NOBOT_RECAPTCHA_PUBLIC_KEY = '76wtgdfsjhsydt7r5FFGFhgsdfytd656sad75fgh'
This can be seperately specified at runtime by passing a
public_key
parameter when constructing theReCaptchaField
, see field usage below.Add a
NOBOT_RECAPTCHA_PRIVATE_KEY
setting to the project'ssettings.py
file. This is your private API key as provided by reCAPTCHA, i.e.:NOBOT_RECAPTCHA_PRIVATE_KEY = '98dfg6df7g56df6gdfgdfg65JHJH656565GFGFGs'
This can be seperately specified at runtime by passing a
private_key
parameter when constructing theReCaptchaField
, see field usage below.
The quickest way to add reCAPTHCA to a form is to use the included ReCaptchaField
field type. A ReCaptcha
widget will be rendered with the field validating itself without any further action required from you. For example:
from django import forms from nobot.fields import ReCaptchaField class FormWithCaptcha(forms.Form): captcha = ReCaptchaField()
The reCAPTCHA widget supports several Javascript options variables customizing the behaviour of the widget, such as theme
and lang
. You can forward these options to the widget by passing an attr
parameter containing a dictionary of options to ReCaptchaField
, i.e.:
captcha = ReCaptchaField(attrs={'theme' : 'clean'})
The captcha client takes the key/value pairs and writes out the RecaptchaOptions value in JavaScript.
To obtain a valid form containing a reCAPTCHA field offline one can mock the verify method of ReCaptchaClient or HumanCaptchaClient, i.e.:
import mock from nobot.client import RecaptchaResponse class MyTestClass: @mock.patch('nobot.client.HumanCaptchaClient.verify') def test_with_valid_form(self, nobot_mock): nobot_mock.return_value = RecaptchaResponse(is_valid=True, error_code=None) # ... # Test your form or view # recaptcha won't 'spoil' test validation offline now
Originally developed under the name django-recaptcha by Praekelt Consulting. Forked for better testability and extensibility.