django项目---短信验证码

1,注册账号

https://yuntongxin.com/user/login

注册账号 并且绑定 测试的账号

保留开发者主账号的账号信息

2,使用容联云发送代码测试

from install ronglian_sms_sdk

  然后在libs/rl_sms.py

from ronglian_sms_sdk import SmsSDK
accId = '8a216da874af5fff017500bb9f8b1a05'
accToken='6042ed9251ac48f496244c8f338e4712'
appId='8a216da874af5fff017500bba0d31a0c'
def send_message(phone, datas):
    sdk = SmsSDK(accId, accToken, appId)
    tid='1'
    resp = sdk.sendMessage(tid,phone,datas)
    return resp

3,添加路由

path('sms_codes/', views.SmsCodeView.as_view()),

4,写入视图函数

from rest_framework.permissions import AllowAny
from rest_framework.views import APIView
from rest_framework.response import Response
import re
import random
from libs.rl_sms import send_message
class SmsCodeView(APIView):
    permission_classes = (AllowAny,)
    def post(self, request):
        phone = request.data.get('phone')
        image_code = request.data.get('image_code')
        image_code_uuid=request.data.get('image_code_uuid')
        if not all([phone,image_code,image_code_uuid]):
            return Response({'code':999,'msg':'参数不全'})
        if not re.match(r'^1[3456789]\d{9}$',phone):
            return Response({'code':999,'msg':'手机号不全'})
        redis_client = get_redis_connection('img_code')
        phone_exists = redis_client.get(phone)
        if phone_exists:
            return Response({'code':999,'msg':'频繁发送,请稍后'})
        redis_image_code = redis_client.get(image_code_uuid)
        if redis_image_code:
            redis_image_code = redis_image_code.decode()

        if image_code.upper() != redis_image_code:
            return Response({'code': 999, 'msg': '图片验证码不对'})
        code = '%06d' % random.randint(0,999999)
        send_resp = send_message(phone,(code,"5"))
        pl = redis_client.pipeline()
        pl.setex(phone, 60*5 , code)
        pl.delete(image_code_uuid)
        pl.execute()
        return Response({'code':200,"msg":"短信成功您可以去死了"})

然后进行前端测试即可

 

posted @ 2020-10-07 11:47  空岛root  阅读(193)  评论(0)    收藏  举报