from django.contrib.auth.hashers import check_password,make_password from rest_framework.views import APIView from rest_framework.response import Response from rest_framework_jwt.utils import jwt_payload_handler, jwt_encode_handler from .models import User import redis class LoginView(APIView): def post(self,request): '''登录或者注册''' name=request.data.get("username") pwd=request.data.get("password") mobile=request.data.get("phone") sms_code = request.data.get('sms_code') rdc = redis.Redis(password=123456) real_sms_code = rdc.get('sms_%s' % mobile) print("redis中存放的短信验证码>>>", real_sms_code) if not real_sms_code: return Response({"msg": "短信验证码不存在或者过期了", "code": 400}) if real_sms_code.decode() != sms_code: return Response({"code": 400, "message": '验证码错误'}) user = User.objects.filter(username=name).first() if user: if check_password(pwd,user.password): return Response({'msg':'登陆成功','code':200}) else: return Response({'msg':'密码错误','code':403}) else: hash_pwd = make_password(pwd) try: user = User.objects.create(username=name,phone=mobile,password=hash_pwd) payload_dict = jwt_payload_handler(user) token = jwt_encode_handler(payload_dict) print(token) return Response({'msg':'登陆成功','code':201,'user':user.username,'token':token}) except: return Response({'msg':'服务端错误','code':500}) from random import randint from users.uilts import send_sms_code import json class SendSmSCode(APIView): def get(self,request): #发送短信验证码 mobile = request.query_params.get('mobile') print('mobile',mobile) data = randint(000000, 999999) #生成短信验证码 if mobile: resp = send_sms_code(mobile,data) else: return Response({'msg':'参数错误','code':400}) #把json转换为字典 status_code = json.loads(resp)["statusCode"] if status_code == '000000' or status_code == '112310': #验证短信验证码发送成功写入redis rdc = redis.Redis(password=123456) rdc.setex('sms_%s'%mobile,600,data) return Response({'msg':'发送成功','code':200}) else: return Response({'msg':'发送失败','code':400})
注册登录发送验证码
最新推荐文章于 2024-05-16 22:15:46 发布