• django drf CreateModelMixin和Serializer.validate_columun


    view demo

    class ValidateCodeSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
        serializer_class = VerifyCodeSerializer
    
        def create(self, request, *args, **kwargs):
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            mobile = serializer.validated_data["mobile"]  # 验证成功可以通过validated_data获取值
    
            code = generator_code()
            print(len(code))
            print(code)
            verify_code = VerifyCode(mobile=mobile, code=code)
            verify_code.save()
            return Response({"mobile": mobile}, status=status.HTTP_200_OK)

    serializerDemo

    class VerifyCodeSerializer(serializers.Serializer):
        mobile = serializers.CharField()
    
        def validate_mobile(self, mobile):
            if User.objects.filter(mobile=mobile).count():
                raise serializers.ValidationError("用户已存在")
    
            if not re.match(r"^1[35678]d{9}$", mobile):
                raise serializers.ValidationError("手机号非法")
    
            now = datetime.datetime.now()
            onmin_ago = now - datetime.timedelta(hours=0, minutes=1, seconds=0)
            if VerifyCode.objects.filter(add_time__gt=onmin_ago):
                raise serializers.ValidationError("发送频率太高")
    
            return mobile
  • 相关阅读:
    i++ 与++i
    jquery下的domcument
    jquery
    MVC MVP MVVM
    两个for还是一个for?
    华为云服务器FTP连接
    vue-i18n 使用方法
    在本地运行vue build 文件
    vue项目中使用模拟数据 MOCK
    超简单 超详细 vue项目中使用svg图标 阿里巴巴图标库
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10659673.html
Copyright © 2020-2023  润新知