A Django form widget implementing intl-tel-input.
项目描述
从https://github.com/charly06/django-intl-tel-input 分支出来,该分支是从 https://github.com/benmurden/django-intl-tel-input 分支出来的。这是一个基于jQuery插件 intl-tel-input 的Django表单小部件。
这个版本仅为了将分支作为django-intl-tel-input2提供安装。
这是一个新包,因此它没有实现intl-tel-input的所有功能。然而,它已经在测试中稳定。
安装
从PyPI安装。
pip install django-intl-tel-input2
将intl-tel-input添加到您的INSTALLED_APPS中,以便Django可以找到init脚本。
...
INSTALLED_APPS += ('intl_tel_input',)
...
使用方法
只需将IntlTelInputWidget添加到您的表单字段。它将添加一个可见的文本输入字段和一个隐藏的输入字段。
from intl_tel_input.widgets import IntlTelInputWidget
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['foo', 'bar']
widgets = {
'bar': IntlTelInputWidget()
}
...
使用标准表单
class MyForm(forms.Form):
tel_number = forms.CharField(widget=IntlTelInputWidget(
visible_input_attrs={
'size': '30',
'class': 'my-css-class',
...
},
hidden_input_attrs={
'class': 'another-css-class',
...
}
))
...
可以使用两个参数visible_input_attrs和hidden_input_attrs分别为可见的文本输入字段和隐藏输入字段添加额外的HTML属性。
表单媒体
如果您在文档的末尾包含了jQuery,那么不要忘记更新此小部件出现的模板中的{{ form.media.js }}。将其放在允许它在jQuery之后出现的块中。
如果您在文档头部加载了jQuery,您无需担心此步骤 - 小部件媒体将在字段之后直接插入。如果您希望将所有JS保留在文档末尾,您仍然可以使用 {{ form.media.js }} 标签来实现。但是,如果您使用 crispy-forms,您需要将 include_media = False 设置为true,以确保 init.js 在jQuery之后加载,从而避免JS错误。
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
...
self.helper = FormHelper()
self.helper.include_media = False
...
如果您在表单中使用 self.helper.include_media = False,您必须将 {{ form.media.css }} 添加到模板中,其中此小部件出现,以便加载 intlTelInput.css。
如果您需要将所有JS加载到头部,您可以使用以下代码片段使 init.js 脚本在文档准备就绪后等待。
jQuery(document).ready(
{{ form.media.js }}
);
所有这些假设您的表单上下文变量名为 form。
选项
此小部件可以使用大多数关键字参数调用,这些参数对应于jQuery插件intl-tel-input中的选项。
- allow_dropdown
类型: 布尔值 默认: True
示例用法
class MyForm(forms.Form): tel_number = forms.CharField(widget=IntlTelInputWidget( allow_dropdown=False, )) ...
- auto_hide_dial_code
类型: 布尔值 默认: True
- auto_placeholder
类型: 字符串 默认: "polite"
- custom_placeholder
此选项尚未实现。
- dropdown_container
类型: 字符串 默认: ""
- exclude_countries
类型: 列表 默认: []
示例用法
class MyForm(forms.Form): tel_number = forms.CharField(widget=IntlTelInputWidget( exclude_countries=['at', 'de', 'ch'], )) ...
- format_on_display
类型: 布尔值 默认: True
- auto_geo_ip
类型: 布尔值 默认: False
此选项代表geoIpLookup。如果设置为 True,将查找用户的地理位置。为了查找用户的地理位置,使用 https://freegeoip.net/json/。
- initial_country
类型: 字符串 默认: ""
- national_mode
类型: 布尔值 默认: True
- placeholder_number_type
类型: 字符串 默认: "MOBILE"
- only_countries
类型: 列表 默认: []
- preferred_countries
类型: 列表 默认: ['us', 'gb']
- separate_dial_code
类型: 布尔值 默认: False
项目详情
django-intl-tel-input2-0.2.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0e6a42c3fc06d66e7bc901602143eee5409f6070e40859076cad6b768e681ea7 |
|
MD5 | 8c40fd6a0a7b383111b4745ebd4f36fe |
|
BLAKE2b-256 | 07d3c65b8e91b26151b3d353c0fc5297f9b0a9ec31f7da6f7fdca6c0716082f9 |