django-phone-verify
is a Django app that enables simple phone number verification using a security code sent via SMS.
It supports Twilio and Nexmo (Vonage) out of the box and is fully customizable to suit your backend needs.
Docs are available at https://www.sanyamkhurana.com/django-phone-verify/.
- 🔐 Verify phone numbers using SMS security codes
- 🔧 Supports custom token length and expiration time
- 🔄 Built-in support for Twilio and Nexmo (Vonage)
- 🧩 Easily extensible via pluggable backends
- ✅ Doesn't interfere with your existing
AUTH_USER_MODEL
- 🚀 Ready-to-use API endpoints via Django REST Framework
- 🛠 Can be used for multiple flows like signup, 2FA, marketing opt-in, etc.
Install the package with all supported backends:
pip install django-phone-verify[all]
Or install with just the backend you need:
pip install django-phone-verify[twilio]
pip install django-phone-verify[nexmo]
- Add
phone_verify
toINSTALLED_APPS
:
INSTALLED_APPS = [
...
"phone_verify",
...
]
- Configure
PHONE_VERIFICATION
settings:
PHONE_VERIFICATION = {
"BACKEND": "phone_verify.backends.twilio.TwilioBackend", # or NexmoBackend
"OPTIONS": {
"SID": "fake",
"SECRET": "fake",
"FROM": "+14755292729",
"SANDBOX_TOKEN": "123456",
},
"TOKEN_LENGTH": 6,
"MESSAGE": "Welcome to {app}! Please use security code {security_code} to proceed.",
"APP_NAME": "Phone Verify",
"SECURITY_CODE_EXPIRATION_TIME": 3600, # in seconds
"VERIFY_SECURITY_CODE_ONLY_ONCE": False,
}
Note: To use Nexmo instead of Twilio, change the BACKEND
path to:
"BACKEND": "phone_verify.backends.nexmo.NexmoBackend"
and in OPTIONS
, use:
"KEY": "your-nexmo-key",
"SECRET": "your-nexmo-secret"
To get started using the app and integrating it into your own flow (DRF or non-DRF), check the following documentation:
- Python 3.6+
- Django 2.1+
- Django REST Framework 3.9+
Found a bug? Want to suggest an improvement or submit a patch? Pull requests are welcome! 🙌 Please check the contributing guide before you start.
This project is licensed under the GPLv3 license.
See the full changelog here: 📄 CHANGELOG.rst