A Django library which interfaces with python-phonenumbers to validate, pretty print and convert
python-phonenumbers is a port of Google's libphonenumber library, which
powers Android's phone number handling.
PhoneNumber, a pythonic wrapper around
PhoneNumberField, a model field
PhoneNumberField, a form field
PhoneNumberField, a serializer field
PhoneNumberPrefixWidget, a form widget for selecting a region code and entering a national number
PhoneNumberInternationalFallbackWidget, a form widget that uses national numbers unless an international number is entered. A
PHONENUMBER_DEFAULT_REGIONsetting needs to be added to your Django settings in order to know which national number format to recognize. The setting is a string containing an ISO-3166-1 two-letter country code.
pip install django-phonenumber-field pip install phonenumbers
As an alternative to the
phonenumbers package it is possible to install the
phonenumberslite package which has
a lower memory footprint.
phonenumber_field to the list of the installed apps in
INSTALLED_APPS = [ ... 'phonenumber_field', ... ]
Then, you can use it like any regular model field:
from phonenumber_field.modelfields import PhoneNumberField class MyModel(models.Model): name = models.CharField(max_length=255) phone_number = PhoneNumberField() fax_number = PhoneNumberField(blank=True)
Internally, PhoneNumberField is based upon
CharField and by default
represents the number as a string of an international phonenumber in the database (e.g
Representation can be set by
PHONENUMBER_DB_FORMAT variable in django settings module.
This variable must be one of
Recommended is one of the globally meaningful formats
'NATIONAL' format require to set up
The object returned is a PhoneNumber instance, not a string. If strings are used to initialize it,
MyModel(phone_number='+41524204242') or form handling, it has to be a phone number
with country code.
tox needs to be installed. To run the whole test matrix with the locally available python interpreters and generate a combined coverage report:
run a specific combination:
tox -e py36-dj21,py36-dj111