django电话号码的轻量级模型和表单域
django-phone-field的Python项目详细描述
django phone字段
django中电话号码的轻量级模型和表单字段
- 查看和编辑表单中的电话号码,并以漂亮的格式查看和编辑django管理员:
(415) 123-4567
- 将所有电话号码规范地存储在数据库中,以便于搜索和唯一性:
+14151234567
- 内置对简单扩展的支持:
(415) 123-4567, press 88
- 不受国际号码的限制(但也不格式化)
- 自动格式化模板中的电话号码
这个包简单、轻量级,并且没有依赖项。然而,它并不试图解决幻想
问题或处理国际电话号码。对于功能齐全的电话号码套餐,请查看
^{
安装
这个包是为python 3和django 1.10+设计的。安装方式:
pip install django-phone-field
然后将'phone_field'
添加到INSTALLED_APPS
设置中。
用法
在你的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
接受django的标准选项CharField
。默认设置为max_length=31
。感觉
可以自由地覆盖它,设置blank=True
等。
有一个特殊的参数E164_only=False
,它添加了一个表单验证器来只接受
E164格式(目前仅支持美国电话号码)。
在您的模板中:
User {{ obj.name }} has phone number {{ obj.phone }}
结果:
User Ted has phone number (415) 123-1233
数据库表示
PhoneField
试图将所有电话号码强制为以下格式:
+[country code][number]x[extension]
+12223334444x55
其中扩展部分是可选的。如果输入的电话号码不能强制为
格式,PhoneField
放弃并简单地按原样存储。
因为所有电话号码都是不带格式存储的,所以您可以将此字段设置为唯一的 在django模型上,它将实际工作。
额外费用
使用|phone
模板筛选器尝试显示来自任意文本的格式化电话号码。使用
显示原始未格式化值的|raw_phone
模板筛选器。
使用属性.is_E164
检查phoneNumber对象是否为E164格式。
还提供了.is_standard
(e164,但允许扩展)和.is_usa
。