简单验证码生成 def generate_code(self): """ 生成四位数字的验证码 """ seeds = "1234567890" random_str = [] for i in range(4): random_str.append(choice(seeds)) return "".join(random_str) setting.py中 # 手机号码正则表达式REGEX_MOBILE = "^1[358]d{9}$|^147d{8}$|^176d{8}$" users/serializers.py:
验证手机号 import refrom datetime import datetime, timedeltafrom VueDjangoFrameWorkShop.settings import REGEX_MOBILEfrom users.models import VerifyCodefrom rest_framework import serializersfrom django.contrib.auth import get_user_modelUser = get_user_model()class SmsSerializer(serializers.Serializer): mobile = serializers.CharField(max_length=11) def validate_mobile(self, mobile): """ 验证手机号码(函数名称必须为validate_ + 字段名) """ # 手机是否注册 if User.objects.filter(mobile=mobile).count(): raise serializers.ValidationError("用户已经存在") # 验证手机号码是否合法 if not re.match(REGEX_MOBILE, mobile): raise serializers.ValidationError("手机号码非法") # 验证码发送频率 one_mintes_ago = datetime.now() - timedelta(hours=0, minutes=1, seconds=0) # 添加时间大于一分钟以前。也就是距离现在还不足一分钟 if VerifyCode.objects.filter(add_time__gt=one_mintes_ago, mobile=mobile).count(): raise serializers.ValidationError("距离上一次发送未超过60s") return mobile