注册-验证码实现业务流程

 python实现

from django import http
from django.shortcuts import render

# Create your views here.
from django.views import View

from apps.verifications.constants import IMAGE_CODE_EXPIRE_TIME

"""
一 把需求写下来 (前端需要收集什么 后端需要做什么)
    前端需要生成一个随机码(uuid), 把这个随机码给后端

    后端需要生成图片验证码,把这个图片验证码的内容保存到redis中 redis的数据是
    uuid: xxxx  有有效期

二 把大体思路写下来(后端的大体思路)

    1.生成图片验证码和获取图片验证码的内容
    2.连接redis,将 图片验证码保存起来 uuid:xxxx 有有效期
    3.返回图片验证码

三 把详细思路完善一下(纯后端)

    1.生成图片验证码和获取图片验证码的内容
    2.1连接redis,
    2.2将 图片验证码保存起来 uuid:xxxx 有有效期
    3.返回图片验证码

四 确定我们请求方式和路由
    GET     image_codes/(?P[\w-]+)/

    GET     image_codes/?uuid=xxxxx


"""
from libs.captcha.captcha import captcha
from django_redis import get_redis_connection
class ImageCodeView(View):

    def get(self,request,uuid):

        # uuid=request.GET.get('uuid')

        # 1.生成图片验证码和获取图片验证码的内容
        text,image = captcha.generate_captcha()
        # 2.1连接redis
        redis_conn = get_redis_connection('code')
        # 2.2将 图片验证码保存起来 uuid:xxxx 有有效期
        # redis_conn.setex(key,senconds,value)
        # redis_conn.setex(uuid,120,text)
        # 我们加了一个前缀
        # redis_conn.setex('img_%s'%uuid,120,text)
        # 增加了代码的可读性
        redis_conn.setex('img_%s'%uuid,IMAGE_CODE_EXPIRE_TIME,text)
        # 3.返回图片验证码
        # content_type  MIME 类型
        # 大类/小类
        # return http.HttpResponse(image)
        # 告知浏览器 这是个图片
        return http.HttpResponse(image,content_type='image/jpeg')

    """
    前端需要收集 手机号,验证码,uuid
    后端接受参数,验证参数,发送短息
    
    1 接受参数
    2 验证参数:
        验证手机号
    3验证用户用户输入的验证码,和服务器保存的 一致
        用户
        服务区
        比对
    4生成一个随机短信吗
    5先把短信验证码保存
        redis key:value
    6最后发送
    
云通讯 :
    短信第三方‘
    看文档开发
        下载 sdk(django-redis 直接使用)
        修改指定的配置
        
    验证
     
    
    """
class SmsCodeView(View):
    def get(self,request,mobile):
        image_code=request.GET.get('image_code')
        uuid=request.GET.get('uuid')
















你可能感兴趣的:(python)