python暑期实训第二十天------用户登录的验证码(图形验证码和短信验证码)

在这里插入图片描述

UUID:

UUID 通用唯一识别码,全称(Universally Unique Identifier),是一个32位长的16进制数字,比如:
8a9069c2-bf35-40e7-9cce-ea3de3ab4e7f
UUID = 时间戳 + 设备特征码 + 随机数,UUID 产生重复数字的可能性非常非常小

图形验证码接口设计

1.1请求方式和地址

  • 图形验证码接口是获取图形验证码,所以采用 GET 请求方式
  • 请求参数使用路径参数,方便编码
  • 在这里插入图片描述
    [\w-]+
    表示:匹配的字符是一个字母,这个字母可以是字母,数字,和中划线,+表示匹配一个或者多个
    在这里插入图片描述

1.2 请求参数:路径参数
在这里插入图片描述

1.3 响应结果
响应结果是一个图片的byte类型数据,需要设置响应的 content-typeimage/jpg 类型
导包

后端逻辑代码实现

1.新建应用 verification ,在项目的urls下注册应用

django-admin startapp verifications

在这里插入图片描述
2. 定义和配置图形验证码视图
我们这里直接使用人家帮我们可以直接生成验证码的工具包
captcha(图片验证码).zip
放在项目的libs包下
在这里插入图片描述
在这里插入图片描述
直接运行这个captcha.py文件,可以看到,输出的元组第二项:就是我们随机生成的验证码
在这里插入图片描述
然后我们写代码的时候,就可以使用 _, image_code, image去接收这个输出的元组,元组第一个是未知的,第二个是验证码,第三个是图片的二进制文件格式
我们使用导入的包的正确路径是:

在这里插入图片描述

当我们生成了图形验证码之后,我们需要将它保存在 redis 缓存中

所以我们需要先配置redis 数据库,并且连接。

准备Redis的2号库用于存储验证码数据
配置redis数据库是在seetings里的dev文件中的CACHES中,我们只需要复制之前的已经配置好了的,将名字改一下,将数据库的编号改一下就ok

在这里插入图片描述
然后使用原生客户端连接上redis:
注:constants.image_code_expire是自己定义的,

redis: StrictRedis = get_redis_connection("image_code") #获取与redis的连接
redis.set(uuid, image_code, ex=constants.image_code_expire)#在redis中保存数据,ex表示有效期

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

image/jpg是 MIME type在这里插入图片描述

import uuid

from django.http import HttpRequest, HttpResponse
from django.shortcuts import render

from django.views import View
from django_redis import get_redis_connection
from redis import StrictRedis

from woniumall.libs.captcha.captcha import captcha
from woniumall.utils import constants

class ImageCodeView(View):
    def get(self, request: HttpRequest, uuid):
        '''
        处理图形验证码请求
        '''
        # 生成图形验证码
        _, image_code, image = captcha.generate_captcha()  # 返回元组

        # 保存图形验证码
        # 连接redis
        redis: StrictRedis = get_redis_connection("image_code")
        redis.set(uuid, image_code, ex=constants.image_code_expire)

        return HttpResponse(content=image, content_type="image/jpg") #image/jpg是 MIME type

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值