首页 > 其他分享 >后端注册接口搭建

后端注册接口搭建

时间:2022-11-04 10:24:47浏览次数:43  
标签:username code create telephone 接口 attrs 注册 序列化 搭建

image

逻辑导航

1.先写一个序列化类,该类中返回需要序列化的字段和反序列化的字段
2.只序列化的字段采用read_only,只反序列化的用write_only
3.序列化类继承模型序列化器,但是需要重写模型序列化器的create方法
4.定义一个全局钩子,校验电话和验证码

代码实现

serializes.py

class RegisterSerialize(serializers.ModelSerializer):
    code = serializers.CharField(max_length=4,min_length=4,write_only=True)
    class Meta:
        model = models.UserInfo
        fields = ['username','code','telephone','password']
        extra_kwargs = {
            'username':{'read_only':True},
            'password':{'max_length':16,'min_length':6}
        }

    def validate(self, attrs):
        telephone = attrs.get('telephone')
        code = attrs.get('code')
        cache_code = cache.get(settings.CACHE_MSG % telephone)
        if re.match('^1[3-9][0-9]{9}$',telephone):
            if code == cache_code:
                attrs['username'] = telephone  # 把用户的手机号设置成用户名,不然数据库没有用户的用户名
                attrs.pop('code')
                return attrs
            else:
                raise ValidationError('验证码不正确')
        else:
            raise ValidationError('手机号不合法')

    # 模型类序列化器由于内部封装好了create和update方法,原本是不需要我们写的,但是code反序列化字段表中没有,
    # 所以,不重写会报错,需要我们自己重写一下
    def create(self, validated_data):
        user = models.UserInfo.objects.create_user(**validated_data)
        return user

views.py

class RegisterView(GenericViewSet,CreateModelMixin):
    queryset = models.UserInfo.objects.all()
    serializer_class = serializers.RegisterSerialize
    def create(self, request, *args, **kwargs):
        response = super().create(request, *args, **kwargs)
        username = response.data.get('username')
        return APIResponse(msg='注册成功',username=username)

urls.py

router.register('register',views.RegisterView,'reg')

标签:username,code,create,telephone,接口,attrs,注册,序列化,搭建
From: https://www.cnblogs.com/suncolor/p/16856800.html

相关文章

  • 手把手教你搭建消防安全答题小程序-首页
    火灾事故重预防,无灾避难得安康。本月是“119”消防月,请大家注意用火用气用电安全,共同做好单位、家庭消防安全工作。接下来,就让我手把手教你搭建消防安全答题小程序吧。软......
  • LogDashboard 搭建网页日志面板
    Net中很多日志框架都是记录在文件或者数据库中。很不方面查看。这篇博客主要描述日志在线查看,直接在网站Url中查看。技术上主要用到Serilog+LogDashboard包。安装NetGet......
  • 尚硅谷k8s(五):搭建k8s集群—平台规划和部署方式介绍
    搭建k8s环境平台规划单master集群多master集群服务器硬件配置要求测试环境:master2核4G20Gnode4核8G40G生产环境:更高要求搭建k8s集群部署方式目前生产部署Kubernetes......
  • [架构之路-59]:目标系统 - 平台软件 - 基础中间件 - POSIX(可移植操作系统接口)与标准库
    目录​​第1章 POSIX(可移植操作系统接口)概述​​​​1.1什么是POSIX​​​​1.2 发布者-IEEE​​​​1.3标准的下载位置​​​​1.4标准的起源​​​​1.5 谁遵守这个......
  • java接口
    接口接口描述了所具备的方法,并没有具体实现。具体的实现由接口的实现类来完成。接口定义使用interface关键字publicinterface接口名{静态常量;抽象方法;}接口的实现......
  • 从 0 搭建一个 vue3 项目
    一、先实现一个简易版本初始化npmnpminit-y//-y能省去填写信息的步骤,一步到位安装几个必要的依赖1npminstallcss-loaderstyle-loader-D//解析css......
  • 登录注册接口搭建
    登录接口分析登录分为多方式登录和验证码登录方式多方式登录1)前台提供账号密码,账号可能是用户名、手机号、邮箱等接口:后台只需要提供一个多方式登录接口即可-多方......
  • linux下搭建oh-my-zsh环境
    目标:因为用习惯了zsh的shell环境,所以习惯在服务器上也搭建zsh环境,但是每次搭建都需要Google每一步骤,感觉很麻烦,所以决定记录一下,免得一次次查1.安装zshzsh是一款shell环......
  • 用Docker搭建Python环境
    步骤1创建项目目录$cd/PATH/TO$mkdirpython-demo2下载python镜像1#下载镜像2dockerpullpython:3.834#查看镜像5dockerimages3创建pytho......
  • 08-组件篇之注册中心(3)&组件篇之Zookeeper(1)_ev
                                            ......