jdango正则表达式怎么写?表单验证正则python,验证数据唯一性
分类: python 标签: jdango正则表达式怎么写?表单验证正则
2024-08-13 17:51:14 588浏览
jdango正则表达式怎么写?表单验证正则,表单校验数据唯一
from django.core.validators import RegexValidator from django.core.exceptions import ValidationError
class HaomaModelForm(forms.ModelForm):
mobile=forms.CharField(max_length=11,required=True,label='手机号',validators=[RegexValidator(r'^[1][3,4,5,7,8,9][0-9]{9}$','手机号格式错误')])
class Meta:
model=Haoma
#显示全部字段
# fields="__all__"
# 排除不显示的字段
# exclude=['level']
fields=['mobile','price','level','state']
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
for name,field in self.fields.items():
field.widget.attrs={"class":"form-control","required":"required" }
#验证手机号唯一性
def clean_mobile(self):
#用户输入的手机号
inp_mobile=self.cleaned_data['mobile']
#获取表单里的主键pk就是id
id=self.instance.pk
ex_mobile=None
if id:
#编辑,exclude(id=id)表示id!=xxx
ex_mobile=Haoma.objects.exclude(id=id).filter(mobile=inp_mobile).exists()
else:
#添加,数据库查询是否存在
ex_mobile=Haoma.objects.filter(mobile=inp_mobile).exists()
if ex_mobile:
raise ValidationError('手机号已存在')
return inp_mobilemodels.xml
from django.db import models
# Create your models here.
class Haoma(models.Model):
# id默认自动生成自增长
# unique=True手机号唯一
mobile=models.CharField(max_length=11,verbose_name='手机号',unique=True)
price=models.DecimalField(max_digits=10,decimal_places=2,verbose_name='价格')
levelitems=(
(4,'钻石级别'),
(3,'黄金级别'),
(2,'白银级别'),
(1,'黄铜级别'),
)
level=models.SmallIntegerField(verbose_name='级别',choices=levelitems,default=1)
stateitems=(
(1,'已占用'),
(0,'未占用')
)
state=models.SmallIntegerField(verbose_name='状态',choices=stateitems,default=0)
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
暂无评论,快来写一下吧
展开评论
您可能感兴趣的博客
他的专栏
他感兴趣的技术

java
vue
springboot
Mysql
ssm
小程序
uniapp
js和jquery