电话号码字段验证未发生

时间:2013-05-07 07:51:30

标签: django django-forms

forms.py

class ContactForm(forms.ModelForm):
     class Meta:
        model = Contact
    def clean_phone_no(self):
        cd=self.cleaned_data
        phone_no=cd.get('phone_no')   
        if(phone_no.isalnum()): 
            raise forms.ValidationError("Please enter a valid phone number")

我应该将文本字段验证为数字字段。

1.不应该带符号。

2.不应该使用字母数字字符

3.应该只取数字,不要求限制。

用Google搜索验证,没有获得所需的东西。任何人都可以帮我这样做。

2 个答案:

答案 0 :(得分:2)

这适用于您的情况。没有任何正则表达式和东西。

class ContactForm(forms.ModelForm):
    class Meta:
        model = Contact

    def clean_phone_no(self):
        phone_no = self.cleaned_data.get('phone_no', None)
        try:
            int(phone_no)
        except (ValueError, TypeError):
            raise ValidationError('Please enter a valid phone number')
        return phone_no

我正在使用简单的Python try...catch并尝试将输入的类型转换为Integer。任何无法转为int的字符串都会引发验证错误。

答案 1 :(得分:2)

from django.core.exceptions import ValidationError

def clean_client_phone(self):
    client_phone = self.cleaned_data.get('client_phone', None)
    try:
        if long(client_phone) and not client_phone.isalpha():
            min_length = 10
            max_length = 13
            ph_length = str(client_phone)
            if len(ph_length) < min_length or len(ph_length) > max_length:
                raise ValidationError('Phone number length not valid')

    except (ValueError, TypeError):
        raise ValidationError('Please enter a valid phone number')
    return client_phone