登录页面的接收短信代码

from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
from django.views import View

class ImageCodeView(View):
    def get(self, request, uuid):
        # 1接收路由中的uuid
        # 2生成图片验证码和图片二进制
        from libs.captcha.captcha import captcha
        #text 是图片验证码的内容保存起来,image是图片二进制
        text,image=captcha.generate_captcha()
        # 通过redis把图片验证码保存起来
        # 3.1进行redis的连接
        from django_redis import get_redis_connection
        redis_cli=get_redis_connection('code') #code就是setting文件保存session中的设置
        # 3.2指令操作
        redis_cli.setex(uuid,60,text)
        # 4.返回图片二进制 content_ type=响应体薮据类型
        # content type的语法形式是:大类/小类 以图片为列子
        return HttpResponse(image,content_type='image/jpeg')

class SmsCodeView(View):
    def get(self, request, mobile):
        #1:获取请求参数
        image_code=request.GET.get('image_code')
        uuid=request.GET.get('image_code_id')
        #2验证参数
        if not all ([image_code,uuid]):
            return JsonResponse({'code':400,'errmsg':'参数不全'})
        #3验证图片
        #3.1连接redis
        from django_redis import get_redis_connection
        redis_cli = get_redis_connection('code')
        #3.2获取redis的数据
        redis_image_code=redis_cli.get(uuid)
        if redis_image_code is None:
            return JsonResponse({'code': 400, 'errmsg': '验证码以过期'})
        #3.3对比
        if redis_image_code.decode().lower() !=image_code.lower():
            return JsonResponse({'code': 400, 'errmsg': '验证码错误'})
        #提取发送短信的标记
        send_flag=redis_cli.get('send_flag_%s'%mobile)
        if send_flag is None:
            return JsonResponse({'code': 400, 'errmsg': '不要频繁发送短信'})
        #4生成短信验证码
        from random import randint
        sms_code = '%06d' % randint(0, 999999)
        #5保存短信验证码
        redis_cli.setex(mobile,300,sms_code)
        #添加一个有效期
        redis_cli.setex('send_flag_%s'%mobile,60,1)
        #6发送短信验证码
        from libs.yuntongxun.sms import CCP
        CCP().send_template_sms(mobile,[sms_code,5],1)
        #7 返回响应
        return JsonResponse({'code':0,'errmsg':'ok'})
 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值