随笔 - 437  文章 - 0 评论 - 342 阅读 - 51万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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
复制代码

 


posted on   chester·chen  阅读(744)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示