django-phone-field
Lightweight model and form field for phone numbers in Django
- View and edit phone numbers in forms and the Django admin in pretty format:
(415) 123-4567 - Store all phone numbers canonically in the database for easy searching & uniqueness:
+14151234567 - Built-in support for simple extensions:
(415) 123-4567, press 88 - Doesn't choke on international numbers (but doesn't format them, either)
- Automatically format phone numbers in templates
This package is simple, lightweight, and without dependencies. However, it doesn't attempt to solve fancy
problems or deal with international phone numbers. For a full-featured phone number package, take a look at
django-phonenumber-field.
Installation
This package is designed for Python 3 and Django 1.10+. Install via:
pip install django-phone-field
Then add 'phone_field' to your INSTALLED_APPS setting.
Usage
In your models.py:
from django.db import models
from phone_field import PhoneField
class MyModel(models.Model):
name = models.CharField(max_length=128)
phone = PhoneField(blank=True, help_text='Contact phone number')
PhoneField accepts standard options for a Django CharField. By default it sets max_length=31. Feel
free to override this, set blank=True, etc. as you would otherwise.
There is one special argument, E164_only=False, which adds a form validator to only accept numbers in
the E164 format (currently, only supported for US phone numbers).
In your template:
User {{ obj.name }} has phone number {{ obj.phone }}
Result:
User Ted has phone number (415) 123-1233
Database representation
PhoneField attempts to coerce all phone numbers to the following format:
+[country code][number]x[extension]
+12223334444x55
where the extension part is optional. If the input phone number can't be coerced to this
format, PhoneField gives up and simply stores it as-is.
Because all phone numbers are stored without formatting, you can set this field to be unique on a Django model and it will actually work.
Extras
Use the |phone template filter to attempt to display a formatted phone number from arbitrary text. Use
the |raw_phone template filter to display the raw, un-formatted value.
Use property .is_E164 to check if a PhoneNumber object is in E164 format.
Also provided are .is_standard (E164 but with extensions allowed) and .is_usa.
Metadata
Release files for django-phone-field 1.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-phone-field-1.8.1.tar.gz | 19.7 kB | Without provenance | Details for django-phone-field-1.8.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_phone_field-1.8.1-py3-none-any.whl | Python 3 | none | any | Details for django_phone_field-1.8.1-py3-none-any.whl |
Total release size: 27.1 kB
Release files / django-phone-field-1.8.1.tar.gz
| Download URL | django-phone-field-1.8.1.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db63af60fc3a3c66b9faa7e72bb7972cd1518299f2e93d68dd95d8df6214f7ed
|
|
BLAKE2b-256 checksum How to use checksums |
2cc93aba7b0a07d4a1a7e1ef17c713abb4d2571e42e18326e7247a78e4e040cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
|
Release files / django_phone_field-1.8.1-py3-none-any.whl
| Download URL | django_phone_field-1.8.1-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
407e74b65e8f7dd14d0a0aa89e277516d57ad6a09ce992cdd94e15b1624b9961
|
|
BLAKE2b-256 checksum How to use checksums |
81c4ff34caba83e8814bfdbde02d1f67a759723c65144b26443f430619baf34b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
|
Security for django-phone-field 1.8.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.