Django Password Validator
django-password-validator is a reusable app that provides a form field and validators that check the strength of a password.
Installation
You can install django-password-validator with pip by typing::
pip install django-password-validator
Or with poetry by typing::
poetry add django-password-validator
Or manually by downloading a tarball and typing::
python setup.py install
Settings
django-password-validator adds 6 optional settings
PASSWORD_MIN_LENGTH : Specifies minimum length for passwords. Defaults to 6.
PASSWORD_MAX_LENGTH : Specifies maximum length for passwords. Defaults to None.
PASSWORD_DICTIONARY : Specifies the location of a dictionary (file with one word per line). Defaults to None.
PASSWORD_MATCH_THRESHOLD : Specifies how close a fuzzy match has to be to be considered a match. Defaults to 0.9, should be 0.0 - 1.0 where 1.0 means exactly the same.
PASSWORD_COMMON_SEQUENCES : Specifies a list of common sequences to attempt to match a password against.
[
"0123456789",
"`1234567890-=",
"~!@#$%^&*()_+",
"abcdefghijklmnopqrstuvwxyz",
"qwertyuiop[]\\asdfghjkl;'zxcvbnm,./",
'qwertyuiop{}|asdfghjkl;"zxcvbnm<>?',
"qwertyuiopasdfghjklzxcvbnm",
"1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/-['=]\\",
"qazwsxedcrfvtgbyhnujmikolp",
"qwertzuiopü+asdfghjklöä#<yxcvbnm,.-",
"qwertzuiopü*asdfghjklöä'>yxcvbnm;:_",
"qaywsxedcrfvtgbzhnujmikolp",
]
PASSWORD_COMPLEXITY : Specifies number of characters within various sets that a password must contain. You can omit any or all of these for no limit for that particular set.
UPPER: Uppercase
LOWER: Lowercase
LETTERS: Either uppercase or lowercase letters
DIGITS: Digits
SPECIAL: Not alphanumeric, space or punctuation character
WORDS: Words (alphanumeric sequences separated by a whitespace or punctuation character)
PWD_VALIDATOR = {
"PASSWORD_MIN_LENGTH" = 6,
"PASSWORD_MAX_LENGTH" = 120,
"PASSWORD_DICTIONARY" = "/usr/share/dict/words",
"PASSWORD_MATCH_THRESHOLD" = 0.9,
"PASSWORD_COMMON_SEQUENCES" = [],
"PASSWORD_COMPLEXITY" = {
"UPPER": 1,
"LOWER": 1,
"LETTERS": 1,
"DIGITS": 1,
"SPECIAL": 1,
"WORDS": 1
}
}
Usage
To use the formfield simply import it and use it:
from django import forms
from passwords.fields import PasswordField
class ExampleForm(forms.Form):
password = PasswordField(label="Password")
You can make use of the validators on your own fields:
from django import forms
from passwords.validators import dictionary_words
field = forms.CharField(validators=[dictionary_words])
You can also create custom validator instances to specify your own field-specific configurations, rather than using the global configurations:
from django import forms
from passwords.validators import (DictionaryValidator, LengthValidator, ComplexityValidator)
field = forms.CharField(validators=[
DictionaryValidator(words=['banned_word'], threshold=0.9),
LengthValidator(min_length=8),
ComplexityValidator(complexities=dict(
UPPER=1,
LOWER=1,
DIGITS=1
)),
])
Django's password validation API is slightly different than the form
validation API and has wrappers in the auth_password_validators module:
AUTH_PASSWORD_VALIDATORS = [
…,
{"NAME": "passwords.auth_password_validators.ComplexityValidator"}
]
password validation API: https://docs.djangoproject.com/en/5.0/topics/auth/passwords/#module-django.contrib.auth.password_validation
Release files for django-password-validator 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_password_validator-0.2.0.tar.gz | 17.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_password_validator-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.1 kB
Release files / django_password_validator-0.2.0.tar.gz
| Download URL | django_password_validator-0.2.0.tar.gz |
|---|---|
| Size | 17.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5313a72a9134de2a85612ba6384bac457fc41514e82d76cb6622cc86f089d9e4
|
|
BLAKE2b-256 checksum How to use checksums |
05d1c853d91fb890f54c57fd305fd5e97cddec3b1c27c7534cd7f16b260ee0a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1019-azure
|
Release files / django_password_validator-0.2.0-py3-none-any.whl
| Download URL | django_password_validator-0.2.0-py3-none-any.whl |
|---|---|
| Size | 37.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa1e5563b8522dcfa6057ccf447174305d5a0927be7d6c53332dd2b4fabd33b4
|
|
BLAKE2b-256 checksum How to use checksums |
5e59d2278422137eaf23dcac8dc93ca993f84189544f634d0ac27687b46da504
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1019-azure
|