Keep track of failed login attempts in Django-powered sites.
Find a file
Camilo Nova ba9926171d
Some checks failed
Test / build (Python 3.11, Django 5.2) (push) Has been cancelled
Test / build (Python 3.12, Django 5.2) (push) Has been cancelled
Test / build (Python 3.13, Django 5.2) (push) Has been cancelled
Test / build (Python 3.14, Django 5.2) (push) Has been cancelled
Test / build (Python 3.12, Django 6.0) (push) Has been cancelled
Test / build (Python 3.13, Django 6.0) (push) Has been cancelled
Test / build (Python 3.14, Django 6.0) (push) Has been cancelled
Test / build (Python 3.12, Django 6.1) (push) Has been cancelled
Test / build (Python 3.13, Django 6.1) (push) Has been cancelled
Test / build (Python 3.14, Django 6.1) (push) Has been cancelled
Test / build (Python 3.14, Django main) (push) Has been cancelled
Test / build (Python 3.14, Django qa) (push) Has been cancelled
Prepare 9.0.0 release
2026-10-30 15:52:17 -05:00
.github Add Django 6.1 support and modernize date and header APIs 2026-10-30 15:19:38 -05:00
axes Fix oversized usernames using model field max length 2026-10-30 15:36:09 -05:00
docs Prepare 9.0.0 release 2026-10-30 15:52:17 -05:00
tests Fix oversized usernames using model field max length 2026-10-30 15:36:09 -05:00
.gitignore chore: add venv to .gitignore 2023-04-26 18:27:33 +03:00
.pre-commit-config.yaml Add .pre-commit-config.yaml 2021-10-12 10:10:05 +03:00
.prospector.yaml Update prospector to 1.8.2 2022-12-03 14:12:51 +02:00
.readthedocs.yaml Clean up RTD build spec 2023-08-17 12:42:58 +03:00
CHANGES.rst Prepare 9.0.0 release 2026-10-30 15:52:17 -05:00
CODE_OF_CONDUCT.md Switch from Jazzband org to Django Commons 2026-10-24 19:48:37 -05:00
codecov.yml Raise minimum test coverage to 90% 2019-02-10 19:22:13 +02:00
CONTRIBUTING.rst Drop support for Python 3.10 and Django 4.2 2026-10-30 15:16:33 -05:00
LICENSE Switch from Jazzband org to Django Commons 2026-10-24 19:48:37 -05:00
manage.py Move tests outside project source folder 2021-01-07 18:23:33 +02:00
mypy.ini Suppress mypy type errors 2026-02-11 22:14:31 +02:00
pyproject.toml Add Django 6.1 support and modernize date and header APIs 2026-10-30 15:19:38 -05:00
README.rst Switch from Jazzband org to Django Commons 2026-10-24 19:48:37 -05:00
requirements.txt Merge branch 'master' into dependabot/pip/django-ipware-gte-8.0.0 2026-10-30 15:26:13 -05:00
setup.py Prepare 9.0.0 release 2026-10-30 15:52:17 -05:00

django-axes
===========

.. image:: https://img.shields.io/badge/Django%20Commons-Project-blue.svg
   :target: https://github.com/django-commons/
   :alt: Django Commons

.. image:: https://img.shields.io/github/stars/django-commons/django-axes.svg?label=Stars&style=socialcA
   :target: https://github.com/django-commons/django-axes
   :alt: GitHub

.. image:: https://img.shields.io/pypi/v/django-axes.svg
   :target: https://pypi.org/project/django-axes/
   :alt: PyPI release

.. image:: https://img.shields.io/pypi/pyversions/django-axes.svg
   :target: https://pypi.org/project/django-axes/
   :alt: Supported Python versions

.. image:: https://img.shields.io/pypi/djversions/django-axes.svg
   :target: https://pypi.org/project/django-axes/
   :alt: Supported Django versions

.. image:: https://img.shields.io/readthedocs/django-axes.svg
   :target: https://django-axes.readthedocs.io/
   :alt: Documentation

.. image:: https://github.com/django-commons/django-axes/workflows/Test/badge.svg
   :target: https://github.com/django-commons/django-axes/actions
   :alt: GitHub Actions

.. image:: https://codecov.io/gh/django-commons/django-axes/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/django-commons/django-axes
   :alt: Coverage


Axes is a Django plugin for keeping track of suspicious
login attempts for your Django based website
and implementing simple brute-force attack blocking.

The name is sort of a geeky pun, since it can be interpreted as:

* ``access``, as in monitoring access attempts, or
* ``axes``, as in tools you can use to hack (generally on wood).


Functionality
-------------

Axes records login attempts to your Django powered site and prevents attackers
from attempting further logins to your site when they exceed the configured attempt limit.

Axes can track the attempts and persist them in the database indefinitely,
or alternatively use a fast and DDoS resistant cache implementation.

Axes can be configured to monitor login attempts by
IP address, username, user agent, or their combinations.

Axes supports cool off periods, IP address allow listing and block listing,
user account allow listing, and other features for Django access management.


Documentation
-------------

For more information on installation and configuration see the documentation at:

https://django-axes.readthedocs.io/


Issues
------

If you have questions or have trouble using the app please file a bug report at:

https://github.com/django-commons/django-axes/issues


Contributing
------------

See `CONTRIBUTING <CONTRIBUTING.rst>`__.