Skip to main content

An easy-to-use math field/widget captcha for Django forms.

Project description

Current Version: 1.1.0

What is it?

A multi-value-field that presents a human answerable question, with no settings.py configuration necessary, but instead can be configured with arguments to the field constructor.

Installation

You can do any of the following to install django-simple-math-captcha

  • Run pip install django-simple-math-captcha.

  • Download or “git clone” the package and run setup.py.

  • Download or “git clone” the package and put the simplemathcaptcha directory on your PYTHONPATH.

Add simplemathcaptcha to your INSTALLED_APPS in django settings

Usage

Forms

To add the captcha field to your form:

from django import forms from simplemathcaptcha.fields import MathCaptchaField

class MyForm(forms.Form):

some_text_field = models.CharField(max_length=50) captcha = MathCaptchaField()

Optionally, you can pass in the following arguments to the field to configure it.

start_int

The number at which the field should begin its range of random numbers. This value will be used passed into the creation of a simplemathcaptcha.widgets.MathCaptchaWidget for this field.

Default value: 1

end_int

The number at which the field should end its range of random numbers. This value will be used passed into the creation of an simplemathcaptcha.widgets.MathCaptchaWidget for this field.

Default value: 10

error_messages

A dictionary of error messages. The keys you can use are invalid and invalid_number.

invalid

is the message to display when the provided answer is incorrect

Default value: "Check your math and try again."

invalid_number

is the message to display when the entry is not a whole number

Default value: "Enter a whole number."

question_tmpl

A string with format placeholders to use for the displayed question.

Default value: "What is %(num1)i %(operator)s %(num2)i?"

question_class

A css class to use for the span containing the displayed question.

Default value: "captcha-question"

widget

The widget instance to use, instead of the field creating an instance of simplemathcaptcha.widgets.MathCaptchaWidget. When provided, it must be an instatiated widget, not a widget class.

Additionally, when specifying widget, you must not specify start_int or end_int.

Default value: None

Rationale

Other math captcha fields can present questions that require decimal answers, answers that could be negative values and that require settings.py configuration. This project aims to provide a single field with minimal or no configuration necessary and reduce or prevent spam form submissions.

Status

django-simple-math-captcha is currently used in production.

Features

  • Simple addition, subtraction or multiplication question for captcha

  • No configuration necessary

  • Question asked changes with every render

  • Uses SHA1 hashing of answer with your SECRET_KEY

  • Unit tests are provided in the source

Compatibility

For any version of Django that doesn’t support Python 3, use django-simple-math-captcha 1.0.9 or below, otherwise use 1.1.0 or above.

License

The django-simple-math-captcha app is released under the Apache Public License v2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-simple-math-captcha-1.1.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

django_simple_math_captcha-1.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file django-simple-math-captcha-1.1.tar.gz.

File metadata

  • Download URL: django-simple-math-captcha-1.1.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for django-simple-math-captcha-1.1.tar.gz
Algorithm Hash digest
SHA256 fa5605daaf9c13b269de7d33f1030ca1565f9843e6f2fc1b8d76396dba3c9628
MD5 a2bf7c69bb542a6524b8a6a92669a74f
BLAKE2b-256 24ba4cf6663e040e4da42b4d017bbf596d4701e0b85813aa3d96679ca0c16a5d

See more details on using hashes here.

File details

Details for the file django_simple_math_captcha-1.1-py3-none-any.whl.

File metadata

  • Download URL: django_simple_math_captcha-1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

File hashes

Hashes for django_simple_math_captcha-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3e4f6437cff3ca65d1b3fd4ce3d19f47a41299f0d0cc68f6bcea8d1a56f5820
MD5 17b300f06eb6ed55abd5e90daecc255b
BLAKE2b-256 a01ab301bb59e0ad5a73b2352d36ad961704229c074ee1fff532c192150e9c43

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page