jdango正则表达式怎么写?表单验证正则python,验证数据唯一性

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: python 标签: jdango正则表达式怎么写?表单验证正则

2024-08-13 17:51:14 275浏览

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_mobile

 models.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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695