Django field/widget for Friendly Capture (https://friendlycaptcha.com).
Latest version:
pip install -e git+git://github.com/christianwgd/django-friendly-captcha.git#egg=django-friendly-captcha
Stable version:
pip install django-friendly-captcha
Add 'friendly_captcha' to your INSTALLED_APPS.
INSTALLED_APPS = [ ... 'friendly_captcha', ]
Add the captcha field to your form:
from friendly_captcha.fields import FrcCaptchaField class ContactForm(forms.ModelForm): class Meta: model = ContactMessage fields = ( 'name', 'email', 'subject', 'text' ) captcha = FrcCaptchaField()
Add the script tags from friendly capture to your forms template (see https://docs.friendlycaptcha.com/#/installation)
<script type="module" src="https://unpkg.com/[email protected]/widget.module.min.js" async defer></script> <script nomodule src="https://unpkg.com/[email protected]/widget.min.js" async defer></script>
I thought about adding these static assets as form media assets, but users wouldn't be able to choose the desired version. So I decided against for now.
If you build up your form from single fields, dont't forget to include the captcha form field.
Register to Friendly Captcha at https://friendlycaptcha.com/signup to get your sitekey and captcha secret.
FRC_CAPTCHA_SECRET = '<yourCaptchaSecret' FRC_CAPTCHA_SITE_KEY = '<yourCaptchaSiteKey>'
FRC_CAPTCHA_VERIFICATION_URL = 'https://friendlycaptcha.com/api/v1/siteverify'
In default the form will fail with an error ('Captcha test failed'). You can change this behaviour by setting FRC_CAPTCHA_FAIL_SILENT to True.
FRC_CAPTCHA_FAIL_SILENT = False
When setting FAIL_SILENT to True it's up to you to handle captcha verification:
# in your form view def form_valid(self, form): captcha_verified = form.cleaned_data['captcha'] if captcha_verified: # send mail or whatever ... else: # capture verification failed, do nothing ...
If you want to log the results of the captcha verifications you can add a logger to your logging configuration:
'django.friendly_captcha': { 'handlers': ['default'], 'level': 'INFO', }
- django_friendly_captcha 0.1.0 (March 2021): Initial release