Django 电话号码表单字段出错

Posted

技术标签:

【中文标题】Django 电话号码表单字段出错【英文标题】:Getting Error with Django Phone Number Form Field 【发布时间】:2017-02-08 09:47:07 【问题描述】:

我正在构建一个包含电话号码字段的 Django 表单。我一直在参考这两个 SO 问题来了解如何做到这一点:1、2。我创建了这个表单域:

class ContactForm(forms.Form):
    phone = forms.RegexField(
        regex = r'^\+?[1-9]\d1,14$',
        #regex = r'\+?\d10,14$',
        error_messages = 'required', 'Phone number required',
        widget = forms.TextInput(attrs='class': 'form-control')
    )

我在模板中显示该字段:

<div>
    <label for="id_phone">Your Phone Number</label>
     form.phone.errors 
     form.phone 
</div>

我了解正则表达式在做什么,它们对我来说看起来是正确的。但是,如果我使用其中任何一个,我都会收到此错误:

ValueError at /business/contact/
dictionary update sequence element #0 has length 8; 2 is required
...
Exception Location: /srv/http/example.com/venvs/dev/local/lib/python2.7/site-packages/django/forms/fields.py in __init__, line 125
(stacktrace...)
widget = forms.TextInput(attrs='class': 'form-control')
super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
super(CharField, self).__init__(*args, **kwargs)
messages.update(error_messages or )
(end of stacktrace)

任何人都可以看到导致此错误的原因吗?这似乎是由正则表达式引起的。

【问题讨论】:

【参考方案1】:

我刚刚发现了错误。它在这一行:

error_messages = 'required', 'Phone number required',

我需要用“:”替换“,”:

error_messages = 'required': 'Phone number required',

【讨论】:

以上是关于Django 电话号码表单字段出错的主要内容,如果未能解决你的问题,请参考以下文章

基于选择的 Django 模板/ChoiceField 显示字段

如何运行迁移并添加电话号码

如何将电话号码字段添加到 django UserCreationForm?

如何使 Django 表单字段唯一?

输入 Django 电话号码时,如何允许用户“马虎”?

空电话号码如何进入我的 JavaScript .length 受限表单字段?