zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    storm学习
    java高级——反射
    [Error]使用了未经检查或不安全的操作...
    将训练集构建成ImageNet模型
    跨域以及一些解决方法
    javascript中的内存管理和垃圾回收
    酷炫的SVG 动态图标
    前端经常遇到的的问题小结
    CSS3 Flex 布局教程
    DNS预解析prefetch
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10659673.html
Copyright © 2011-2022 走看看