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搜索验证,没有获得所需的东西。任何人都可以帮我这样做。
答案 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