Django型号的国际电话号码字段。
django-phonenumber-field的Python项目详细描述
一个django库,它与python-phonenumbers接口来验证、漂亮地打印和转换 电话号码。python-phonenumbers是google的libphonenumber库的一个端口,它 支持android的电话号码处理。
包括:
- PhoneNumber,一个pythonic包装,围绕python-phonenumbers'PhoneNumber类
- PhoneNumberField,模型字段
- PhoneNumberField,表单域
- PhoneNumberField,序列化程序字段
- PhoneNumberPrefixWidget,一个表单小部件,用于选择地区代码并输入国家号码
- PhoneNumberInternationalFallbackWidget,一个使用国家编号的表单小部件,除非 输入国际号码。需要添加PHONENUMBER_DEFAULT_REGION设置 为您的django设置,以了解要识别的国家号码格式。这个 设置是包含ISO-3166-1双字母国家代码的字符串。
安装
pip install django-phonenumber-field pip install phonenumbers
作为phonenumbers包的替代,可以安装 phonenumberslite包 a lower memory footprint。
基本用法
首先,将phonenumber_field添加到 您的settings.py文件:
INSTALLED_APPS = [ ... 'phonenumber_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)
在内部,phoneNumberField基于CharField,默认情况下 将数字表示为数据库中国际电话号码的字符串(例如 '+41524204242')。
表示可以由django设置模块中的PHONENUMBER_DB_FORMAT变量设置。 此变量必须是'E164'、'INTERNATIONAL'、'NATIONAL'或'RFC3966'之一。 建议使用具有全局意义的格式之一'E164'、'INTERNATIONAL'或 'RFC3966'。'NATIONAL'格式需要设置PHONENUMBER_DEFAULT_REGION变量。
返回的对象是电话号码实例,而不是字符串。如果使用字符串初始化它, 例如,通过MyModel(phone_number='+41524204242')或表单处理,它必须是一个电话号码 有国家代码。
运行测试
需要安装毒物。运行整个测试矩阵 提供python解释器并生成组合覆盖率报告:
tox
运行特定组合:
tox -e py36-dj21,py36-dj111