跳转到主要内容

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_attrshidden_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 (6.7 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面