zoukankan      html  css  js  c++  java
  • 发送短信-----用restful 校验规则

    我们的需求如下

         1. 获取手机号
            2. 手机格式校验
            3. 生成随机验证码
            4. 验证码发送到手机上
            5. 把验证码+手机号保留(30s过期)

    复习 我们在有表的情况下的序列化

    class MessageSerializer(serializers.ModelSerializer):
        """
        这段代码是我们在有表的时候使用的 现在没有表 我们用继承serializers.Serializer
        下面的class Meta也不能要了
        """
        class Meta:
            model = ""
            fileds = "__all__"

    没有表

    def phone_validator(value):
        if not re.match(r'^(1[3|4|5|6|7|8|9])d{9}$', value):
            raise ValidationError("手机号格式错误")
    
    class MessageSerializer(serializers.Serializer):
        '''
        只是默认验证phone不为空 自己要是想加验证 自己加一个 validators 还可以钩子校验
        顺序 先校验默认不为空,在校验validators 在校验钩子函数
        '''
        phone = serializers.CharField(label="手机号", validators=[phone_validator,])
    
        def validate_phone(self, value):
            pass

    在后端校验手机号 有两种方式

    class MessageView(APIView):
        def get(self, request, *args, **kwargs):
    
            '''
            # 1. 获取手机号
            phone = request.query_params.get('phone')
    
            #  2. 手机格式校验
            # ①
            '''
            import re
            if not re.match(r'^(1[3|4|5|6|7|8|9])d{9}$',phone):
                return Response("手机号格式错误")
            '''
            # ②
            ser = MessageSerializer(data=request.query_params)if not ser.is_valid():
                return Response({'status':False, 'message': '手机号格式错误'})
    
           # 3. 生成随机验证码
            import random
            random_code = random.randint(1000, 9999)
    
    
            # 4. 验证码发送到手机上 购买服务器进行发送短信;阿里云/ 腾讯云
    
            # todo tencent.send_message(phone,random_code)
    
            # 5. 把验证码+手机号保留(30s过期)              setting要配置
            # 5.1 搭建redis  腾讯云 阿里云  也有
            # 5.2 django-redis
            from django_redis import get_redis_connection
            conn = get_redis_connection()
            conn.set(phone, random_code, ex=30)

    4. 验证码发送到手机上 购买服务器进行发送短信;阿里云/ 腾讯云

     https://www.cnblogs.com/a438842265/p/12366196.html

  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/a438842265/p/12359242.html
Copyright © 2011-2022 走看看