注册登录发送验证码

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})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值