完整电商项目--(三)验证码操作(1):图像验证码

实现图像验证码

接口设计

  • 首先要知道一个叫 uuid 的东西
    • 这是一个几乎不会重复的值
  • url (请求地址): image_codes/(?P[\w-]+)/
  • 响应结果: image/jpg

流程分析

  • 首先我们需要接收前端的请求,生成图像验证码返回给前端
  • 还要自己保存 图形验证码的 , 用来做后续 验证码的判断。
    • 保存图形验证码: 就是存储在 redis 当中的。
    • 存储为string类型 ,如果设置的键不存在则为添加,如果设置的键已经存在则修改
    • 因为用户数量庞大,我们为了保证避免重复的键,导致上面的结果。所以我们需要使用带 uuid, 一个几乎不会重复的值作为键
    • uuid:这个值由前端产生,放到请求链接当中去。由此 /(?P[\w-]+)/ 来捕获。

生成图片:

  • 做所周知,python在做图像处理方面是十分优秀的! 所以我们只要随便在网上百度一下,下载一份 用来生成 验证码图片的 代码即可。
    在这里插入图片描述
# 这是调用生成验证码图片 的包
from meiduo_mall.libs.captcha.captcha import captcha

# 生成图片数据
text, code, image = captcha.generate_captcha()
# 得到的是 一个元组, 文本信息, 图形验证码, 以及二进制图像数据, 我们解包获取它们
('ewWRJ59ngTxbFoVAD86pZvsi', 'WL6P', b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.\' 。。。。。。 此处省略)
  • 返回响应
    • 在返回给前端的时候也有注意的地方
        # 响应图像验证码
        return http.HttpResponse(image, content_type='imgae/jpg')

  • 这时候我们需要注意这个 HttpResponse对象的用法。
    在这里插入图片描述
    我们在看一个例子:
    在这里插入图片描述
  • 通过这个例子我们知道了,默认content_type=“text/html; charset=utf-8”
  • 也就是告诉浏览器:让浏览器以文本或者html的形式处理响应!
  • 那么我们知道了这个META 类型数据。据需要我们百度,查找对应的 图片数据,应该使用什么

直接百度:META 类型 就会出现。
在这里插入图片描述
我们只要找到对应的就可以啦!!

那么浏览器就会正确 显示一张图像验证码码了。 关于验证就不在说了,我们只讲一下关键步骤。 验证,也就是 用户输入的值, 我们在从redis当中取出值。然后对比即可!
效果:
在这里插入图片描述

over!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值