Django管理员的电话号码字段
django-phonenumbers的Python项目详细描述
安装
run pip install django_phonenumbers
配置设置。py
Add django_phonenumbers to INSTALLED_APPS
管理.py
run manage.py collectstatic
设置.py
PHONE_NUMBER_REGION='GE'PHONE_NUMBERS_FORMATS_BY_REGION={'GE':{'pattern':'(\\d{3})(\\d{2})(\\d{2})(\\d{2})','format':'\\1 \\2-\\3-\\4','prefix_format':'+%s (%s)'},'US':{'pattern':'(\\d{3})(\\d{3})(\\d{4})','format':'\\1 \\2-\\3','prefix_format':'+%s (%s)'},}
- “电话号码地区”确定将在管理员的相应电话号码字段中选择哪个国家地区
- “phone_numbers_formats_by_region”用于“phone_numbers_format”筛选器
型号
#models.pyclassMyModel(models.Model):...phone_number=PhoneNumberField()...def__str__(self):returnstr(self.phone_number)
“电话号码”字段的类型将是“电话号码”
classPhoneNumber:def__init__(self,country_code=None,region_code=None,phone_number=None):""" :type country_code: str :type region_code: str :type phone_number: str """self.country_code=country_codeself.google_phone_number=Noneself.region_code=region_codeself.phone_number=phone_number
“\u str\uu”和“\u repr\uu”功能被重写,以返回“国家代码”+“+”电话号码“
model.fields.phoneNumberField默认情况下在管理中使用form.fields.phoneNumberField。
model.fields.phoneNumberField和form.fields.phoneNumberField正在验证并格式化(以国家格式)输入的数字
模板示例
<li> {{ number.phone_number }} // {{ number.phone_number.region_code }} // {{ number.phone_number.country_code }} // {{ number.phone_number.phone_number }} <div> {% load phone_numbers_extra %} <h4>Filter <small>{{ number.phone_number|phone_number_format }}</small></h4><h4>Simple tag <small> {% phone_number number.phone_number pattern='(\\d{3})(\\d{3})(\\d{3})' number_format='\\1 \\2-\\3' prefix_format='+%s (%s)' %} </small></h4></div></li>
电话号码格式使用来自settings.py的电话号码格式按地区来确定电话号码格式
示例
'GE': { 'pattern': '(\\d{3})(\\d{2})(\\d{2})(\\d{2})', 'format': '\\1 \\2-\\3-\\4', 'prefix_format': '+%s (%s)'},
“GE”:地区代码
- 'pattern':'(\\d{3})(\\d{2})(\\d{2})(\\d{2})'是正则表达式。此regex将电话号码分成4组:
- 3位数
- 2位数
- 2位数
- 2位数
'format':'\\1\\2-\\3-\\4'数字是上面提到的组。例如,如果要在作用域中放置最后两位数字,则应写入“\1\2-\3-(\4)”,结果将是xxx xx xx-(xx)
'前缀格式':'+%s(%s)'第一个'%s'是国家代码第二个移动运营商或城市代码,例如+995(595),其中995是我的国家代码,595是我的移动运营商代码。您可以更改格式。例如'[%s][%s]'将给出[995][595]此结果
使用这个简单的标记,您可以指定内联格式
{%phone_numbernumber.phone_numberpattern='(\\d{3})(\\d{3})(\\d{3})'number_format='\\1 \\2-\\3'prefix_format='+%s (%s)'%}