zoukankan      html  css  js  c++  java
  • django注册入库正则验证手机和邮箱

    1.数据库库表设计

    models.py下

    #基类
    class Base(models.Model):
        #创建时间
        create_time = models.DateTimeField(default=timezone.now,null=True)
        class Meta:
            abstract = True
    
    #用户
    class User(Base):#继承基类
        id = models.AutoField(primary_key=True)
        username = models.CharField(max_length=100)#用户名
        password = models.CharField(max_length=200)#密码
        phone = models.CharField(max_length=15)#手机号
        emali = models.CharField(max_length=50)#邮箱
        class Meta:
            db_table = "my_user"

    第一步记得迁移数据库

    2.views.py下

    from myapp.models import User#导入models包
    from django.utils.deprecation import MiddlewareMixin
    
    #用户注册
    class Register(APIView):
        def post(self,request):
            #接受数据
            username = request.POST.get("username",None)
            password = request.POST.get('password')
            phone = request.POST.get('phone')
            emali = request.POST.get('emali')
            #手机号正则验证
            try:
                re.match(r"^1[35678]d{9}$", phone)
            except Exception as e:
                return Response({'message': '手机号不符合规则'})
            #邮箱正则验证
            my_emali = re.findall(r'^[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}.[com,cn,net]{2,3}$', emali)
            if not my_emali:
                return Response({'message':'邮箱不正确'})
            #唯一性验证
            try:
                user = User(username=username,password=password,phone=phone,emali=emali)
                user.save()
                return Response({'message':'注册成功'})
            except Exception as e:
                print(e)
                return Response({'message': '注册失败'})

    3.自定义接口

    urls.py下

    from myapp.views import Register
    
    urlpatterns = [
        path('register/', Register.as_view())
        
    ]

    4.前端代码

    vue写的前端

    <template>
        <div>
            <center><h1>这是·注册页面</h1></center>
            <a-form-item label="用户名" v-bind="formlayout">
              <a-input v-model="username"/>
            </a-form-item >
    
          <a-form-item label="密码" v-bind="formlayout">
              <a-input v-model="password"/>
            </a-form-item >
    
          <a-form-item label="确认密码" v-bind="formlayout">
              <a-input v-model="password1"/>
            </a-form-item >
    
          <a-form-item label="手机号" v-bind="formlayout">
              <a-input v-model="phone"/>
            </a-form-item >
    
          <a-form-item label="邮箱" v-bind="formlayout">
              <a-input v-model="emali"/>
            </a-form-item >
            <a-form-item v-bind="buttonlayout"  >
    
            <a-button type="primary"  @click="submit">注册</a-button>
            </a-form-item>
    
        </div>
    
    </template>
    <script type="text/javascript">
        export  default {
          data(){
            return{
            username:'',
            password:"",
            password1:"",
            phone:"",
            emali:"",
              // 表单样式
              formlayout:{
              //标签
              labelCol:{
                xs:{span:24},
                sm:{span:8}
              },
                // 文本框
                wrapperCol:{
                xs:{span:24},
                sm:{span:16}
                }
              },
              // 按钮样式
              buttonlayout:{
              //标签
              wrapperCol:{
                xs:{
                  span:24,
                  offset:0
                },
                sm:{span:16,offset:8}
              },
              }
            }
          },methods:{
            submit(){
              // alert('注册成功')
                  if (this.password ===this.password1){
                  this.axios.post('http://127.0.0.1:8000/register/',this.qs.stringify({
                  username:this.username,
                  password: this.password,
                  phone: this.phone,
                  emali: this.emali,
                })).then(res=>{
                  console.log(res.data)
                    this.$message.info(res.data.message)
                })
              }
                  else {
                    this.$message.info('密码不一样')
                  }
                  }
            },created() {
    
          }
    
        }
    
    </script>

    1

  • 相关阅读:
    杭电2050
    杭电2043,小细节。。。。。
    杭电2034,坑爹的人见人爱a-b
    杭电2035--人见人爱A^B
    杭电2032--杨辉三角
    杭电2029--Palindromes _easy version(回文串)
    杭电2028--Lowest Common Multiple Plus
    NPOI大数据分批写入同个Excel
    [每日一题] OCP1z0-047 :2013-07-25 权限――角色与对象权限
    Ubuntu下安装搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/wangxudong01/p/13887476.html
Copyright © 2011-2022 走看看