Skip to main content

A tool to protect formulaire from spam.

Project description

Prune's Captcha

What is it for?

Captcha helps prevent robots from spamming using your forms.

Prerequisites

  • To be installed on a Prune Django project that uses poetry or UV

UV project

Installation

Run the following command in the console:

uv add captcha_prune

Updating the captcha

Don't hesitate to regularly run uv sync --upgrade, as the captcha evolves with time and our practices!

Poetry project

Installation

Run the following command:

poetry add prune_captcha

Updating the captcha

Don't hesitate to regularly run poetry update, as the captcha evolves with time and our practices!

Captcha Integration

Configuration

In settings.py, set the path to the images used for the puzzle:

PUZZLE_IMAGE_STATIC_PATH = "website/static/website/images/"

Utilisation

  • GET request (form display)

    • Use create_and_get_puzzle to generate the captcha data:

      from captcha_prune.utils import create_and_get_puzzle
      
      puzzle = create_and_get_puzzle(request)
      
    • Passes the data into the context under the puzzle variable:

      return render(
          request,
          "website/pages/contact/page.html",
          {"form": form, "puzzle": puzzle},
      )
      
    • Include the component in your template:

      {% include "captcha_prune/captcha.html" %}
      
  • POST request (form submission)

    -   Use verify_captcha to validate the captcha:
    
        ```python
        from captcha_prune.utils import verify_captcha
        ```
    
        ```python
        response = verify_captcha(
            request, redirect("/"), redirect("website:contact-page"), form
        )
        ```
    
    -   None if the captcha is correct.
    
    -   Redirects in case of expired session or incorrect captcha:
    
        ```python
        if response is not None:
            return response
        ```
    

Example

```python
def contact_view(request):
    if request.method == "POST":
        form = ContactForm(request.POST)
        if form.is_valid():
            response = verify_captcha(
                request, redirect("/"), redirect("website:contact-page"), form
            )
        if response is not None:
            return response
        messages.success(request, "Formulaire soumis avec succès.")
        return redirect("/")
    else:
        puzzle = create_and_get_puzzle(request)
else:
    form = ContactForm()
    puzzle = create_and_get_puzzle(request)
return render(
    request,
    "website/pages/contact/page.html",
    {"form": form, "puzzle": puzzle},
)
```

Available Versions

Version Date Notes
1.10.0 2025-05-20 fix documentation, removed ...
1.9.0 2025-05-20 puzzle images path fixed
1.8.0 2025-05-20 added migrations
1.7.0 2025-05-20 PUZZLE_IMAGE_STATIC_PATH ...
1.6.0 2025-05-20 added templates
1.5.0 2025-05-20 app config fixed, components ...
1.4.0 2025-05-20 added BaseModel in Captcha, ...
1.3.0 2025-04-30 deleted start_server, deleted ...
1.2.0 2025-04-30 fixed prune_captcha command, ...
1.1.0 2025-04-30 start_server was not a module, ...
1.0.0 2025-04-29 First version of the captcha ...

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

prune_captcha-1.10.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prune_captcha-1.10.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file prune_captcha-1.10.0.tar.gz.

File metadata

  • Download URL: prune_captcha-1.10.0.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.31

File hashes

Hashes for prune_captcha-1.10.0.tar.gz
Algorithm Hash digest
SHA256 9b053c8fdc3f04cb6bd22fbbe446f555a187a1c968b8b2410970cb600494a0f4
MD5 3536f803825d9cc6628add0dd4016275
BLAKE2b-256 a16d462dc4cfa365686432d6c485d9f36d690eb45b774af4c85563dfb16d5c91

See more details on using hashes here.

File details

Details for the file prune_captcha-1.10.0-py3-none-any.whl.

File metadata

File hashes

Hashes for prune_captcha-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cde2a8743442825be208dae90c4edc5b8112099d7b9bf4d5da4aac380bc3c13
MD5 4b3d03e73f9af045bd7d0b4b94f66a3f
BLAKE2b-256 04293780ede83e60c5ccc33b65751e4acbb6946a6c5b0515531d5a1540717e59

See more details on using hashes here.

Supported by

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