短信验证_阿里云短信服务的使用-----获取短信验证码

开通阿里云短信服务

3343d1494ff32c22ffddee8401298041.png
  • 申请签名和模板
c44d64a995deedb53b1f61704d560199.png
  • 下载pythonSDK

pip install aliyun-python-sdk-core

  • 设置AK和SK
67d343c70100a0610e4892e1e37b7606.png

封装发短信代码utils/BaseView.py

  1. import json
  2. from aliyunsdkcore.client import AcsClient
  3. from aliyunsdkcore.request import CommonRequest
  4. from syl.settings import ALY_ACCESSKEY_SECRET, ALY_ACCESSKEY_ID
  5. # phone = ""
  6. # phone_code = ""
  7. # data = {"code": phone_code}
  8. def send_sms(phone, data):
  9. # accessKeyId
  10. # accessSecret
  11. # cn-hangzhou
  12. client = AcsClient('', '', 'cn-hangzhou')
  13. request = CommonRequest()
  14. request.set_accept_format('json')
  15. request.set_domain('dysmsapi.aliyuncs.com')
  16. request.set_method('POST')
  17. request.set_protocol_type('https') # https | http
  18. request.set_version('2017-05-25')
  19. request.set_action_name('SendSms')
  20. request.add_query_param('RegionId', "cn-hangzhou")
  21. request.add_query_param('PhoneNumbers', phone)
  22. request.add_query_param('SignName', "美多商城")
  23. request.add_query_param('TemplateCode', "SMS_185212884")
  24. request.add_query_param('TemplateParam', data)
  25. response1 = client.do_action(request)
  26. # python2: print(response)
  27. res=json.loads(str(response1, encoding='utf-8'))
  • 短信发送和验证的逻辑
  • # verificationsapp/view.py 发送接口 #
  1. #verificationsapp/VIEW.PY
  2. class SendSMSCode(APIView):
  3. def post(self, request):
  4. # 获取数据
  5. phone = request.data.get("phone")
  6. image_code = request.data.get("image_code")
  7. image_code_uuid = request.data.get("image_code_uuid")
  8. print('=====================', phone, image_code_uuid, image_code)
  9. # 验证数据
  10. if not all([phone, image_code, image_code_uuid]):
  11. return Response({"code": 4005, "msg": "参数不全"})
  12. # 逻辑与入库
  13. # 3、验证图片验证码是否正确
  14. # 3.1连接redis
  15. redis_cli = get_redis_connection("img_code")
  16. # 3.2拿着uuid获取图片验证码
  17. redis_img_code = redis_cli.get(image_code_uuid).decode('utf-8')
  18. # 3.3比对redis里的code和发来的code是否一致
  19. if image_code.lower() != redis_img_code.lower():
  20. return Response({"code": 4009, "msg": "图片验证码错误"})
  21. # 4、使用阿里云发送短信
  22. # 4.1准备手机验证码
  23. number = random.randint(100000, 999999)
  24. data = {"code": number}
  25. print(data)
  26. # 4.2使用封装好的接口发送短信
  27. send_sms(phone, data)
  28. # 5.将短信验证码绑定并存入redis
  29. redis_cli.setex(phone, 60 * 60, number)
  30. # 6.删除image_code
  31. redis_cli.delete(image_code_uuid)
  32. return Response({"code": 0, "msg": "发送成功"})

后记

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值